2013年9月全国计算机等级《二级C++》考前冲刺试卷二
-
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公有派生。
(1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“//********1********”之后添加适当的语句。
(2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传人。请在注释“//********2********”之后添加适当的语句。
(3)定义类A2的构造函数,该构造函数有3个整型的参数x,y和z,在构造函数中请将x赋值给数据成员C,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//********3********”之后添加适当的语句。
(4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员C的值,上述3个值在输出时以空格隔开。请在注释“//********4********”之后添加适当的语句。
程序输出结果如下:
7
3
738
注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。
试题程序:
#include
classA
{
inta;
public:
//********1********
intgeta{returna;}
};
classA1:publicA
{
intb;
public:
//********2********
intgetb{returnb;}
};
classA2:publicA1
{
intC;
public:
//****,****3********
voidshow
{
//********4********
}
};
voidmain
{
A2a(8.3.7):
cout
}
-
使用VC++6.0打开考生文件夹下的源程序文件
2.cpp。请完成函数fun(intx),该函数的功能是将X的值转换成二进制数输出到屏幕,并且在函数中调用写函数WriteFile将结果输出到2.txt文件中。
例如x=6,6的二进制数为110,则输出到屏幕的数为110。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include(iostream)
#include(fstream)
#include(cmath)
usingnamespacestd;
voidWriteFile(char*str)
{
ofstreamout1;
out1.open("2.txt",ios—base::binary|ios_base::app);
for(inti=0;str[i]!=0;i++)
out1.put(str[i]);
out1.close;
}
voidfun(intx)
{
}
voidClearFile
{
ofstreamout1;
out1.open("2.txt");
out1.close;
}
intmain
{
ClearFile;
fun(13);
return0;
}
-
算法的时间复杂度是指( )。
- A.算法的执行时间
- B.算法所处理的数据量
- C.算法程序中的语句或指令条数
- D.算法在执行过程中所需要的基本运算次数
-
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果正确。
程序输出:
8
8
注意:错误的语句在/********error********/的下面。修改该语句即可,其他的语句不能修改。
试题程序:
#include(iostream.h>
classCO
{
public:
/********error********/
staticintn=0:
CO
{
n++:
}
~CO
{
n--:
}
}:
/********error********/
intCO::n;
voidmain
{
COobj;
COobj2[7];
CO*C=NULL:
c=&obj:
/********error********/
eout<
cout<
}
-
C源程序中不能表示的数制是( )。
- A.二进制
- B.八进制
- C.十进制
- D.十六进制
-
若MyTemp是一个具有虚拟类型参数的类模板,且有如下语句序列:
MyTemp
p2; MyTemp
p3[2]; 编译系统在处理上面的话句序列时,所生成的模板MyTemp的实例的个数是( )。
- A.1
- B.2
- C.3
- D.4
-
有下列程序:
#include
voidmain( )
{inta=1,b=2,c=3,d=0;
if(a==1&&b++==2)
if(b!=2‖c--!=3)
printf("%d,%d,%d\n",a,b,c);
elseprintf("%d,%d,%d\n",a,b,c);
elseprintf("%d,%d,%d,%d\n",a,b,c);
}
程序运行后的输出结果是( )。
- A.1,2,3
- B.1,3,2
- C.1,3,3
- D.3,2,1
-
将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是( )。
- A.不合法的运算符
- B.一元运算符
- C.无操作数的运算符
- D.二元运算符
-
要定义一个引用变量P,使之引用类MyClass的一个对象,正确的定义语句是( )。
- A.MyClassp=MyClass;
- B.MyClassp=newMyClass;
- C.MyClass&p=newMyClass
- D.MyClassa,&p=a;
-
在C语言中,只有在使用时才占用内存单元的变量,其存储类型是( )。
- A.auto和register
- B.extern和register
- C.auto和static
- D.static和register
-
模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准是模块的( )。
- A.抽象和信息隐蔽
- B.局部化和封装化
- C.内聚性和耦合性
- D.激活机制和控制方法
-
下列关于多态性的描述,错误的是( )。
- A.C++语言中的多态性分为编译时的多态性和运行时的多态性
- B.编译时的多态性可通过函数重载实现
- C.运行时的多态性可通过模板和虚函数实现
- D.实现运行时多态性的机制称为动态绑定
-
软件生命周期可分为定义阶段、开发阶段和维护阶段。详细设计属于( )。
- A.定义阶段
- B.开发阶段
- C.维护阶段
- D.上述3个阶段
-
下列选项中,不是一个算法的基本特征的是( )。
- A.完整性
- B.可行性
- C.有穷性
- D.拥有有足够的情报
-
下列字符串中,正确的C++标识符是( )。
- A.foo-1
- B.2b
- C.new
- D._256
-
软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件),下面属于系统软件的是( )。
- A.编辑软件
- B.操作系统
- C.教务管理系统
- D.浏览器
-
有下列程序:
#include
#include”strin9.h”
typedefstruct{charname[9];charsex;floatscore
[2];}STU;
voidf(STUa)
{
STUb={"Zha0",'m',85.0,90.0);inti;
strcpy(a.name,b.name);
sex=b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
}
voidmain( )
{
STUc={"Qian",'f',95.0,92.0);
f(c);
printf("%s,%c,%2.Of,%2.Of\n",C.name,C.sex,
score[O],C.score[1]);
}
程序的运行结果是( )。
- A.Qian,f,95,92
- B.Qian,m,85,90
- C.Zha0,f,95,92
- D.Zha0,m,85,90
-
两个或两个以上模块之间关联的紧密程度称为( )。
- A.耦合度
- B.内聚度
- C.复杂度
- D.数据传输特性
-
下列程序段中包含4个函数,其中具有隐含this指针的是( )。
intfunl( );
classTest{
public:
intfun2( );
friendintfun3( );
staticintfun4( );
};
- A.funl
- B.fun2
- C.fun3
- D.fun4
-
若有如下程序:
#include
usingnamespaeestd;
classTestClass
{
public:
voidwho(){cout<<"TestClass"<
};
classTestClassl:publicTestClass
{
public:
voidwho(){cout<<"TestClassl"<
intmain()
{
TestClass*P;
TestClasslobj1;
p=&obj1;
p->who();
retum0;
}
则该程序运行后的输出结果是( )。
- A.TestClassl
- B.TestClass
- C.0
- D.无输出
-
下面描述中错误的是( )。
- A.系统总体结构图支持软件系统的详细设计
- B.软件设计是将软件需求转换为软件表示的过程
- C.数据结构与数据库设计是软件设计的任务之一
- D.PAD图是软件详细设计的表示工具
-
有以下程序;
#include
usingnamespacestd;
classComplex
{
public:
Complex(doubler=0,doublei=O):re(r),im(i){}
doublereal()const{returnre;}
doubleimag()const{returnim;}
Complexoperator+(Complexc)const
{returnComplex(re+C.re,im+C.im);}
private:
doublere,im;
};
intmain()
{
Complexa=Complex(1,1)+Complex(5);
cout
}
程序执行后的输出结果是( )。
- A.6+6i
- B.6+1i
- C.1+6i
- D.1+1i
-
设有两个字符串p和q,求q在p中首次出现位置的运算称为( )。
- A.连接
- B.模式匹配
- C.求子串
- D.求串长
-
下列关于C++流的描述中,错误的是( )。
- A.cout>>'A'表达式中输出字符A
- B.eof函数可以检测是否到达文件尾
- C.对磁盘文件进行流操作时,必须包含头文件fstream
- D.以ios_base::Out模式打开的文件不存在时,将自动建立一个新文件
-
下列关于完全二叉树的叙述中,错误的是( )。
- A.除了最后一层外,每一层上的结点数均达到最大值
- B.可能缺少若干个左右叶子结点
- C.完全二叉树一般不是满二叉树
- D.具有结点的完全二叉树的深度为[log2n]+1
-
下面关于C++流的叙述中,正确的是( )。
- A.cin是一个输入流对象
- B.可以用ifstream定义一个输出流对象
- C.执行语句序列char*y="PQMN";cout<
- D.执行语句序列charx[80];cin.getline(x,80);时,若输入Happynewyear,则X中的字符串是“Happy”
-
下列关于线性链表的叙述中.正确的是( )。
- A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致
- B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续
- C.进行插入与删除时,不需要移动表中的元素
- D.以上三种说法都不对
-
以下for语句中不是死循环的是( )。
- A.for(inti=0;i<1;++i);
- B.for(inti=0;;++i);
- C.for(inti=1;i>0;++i);
- D.for(;;);
-
已知在一个类体中包含如下函数原型:VOLUMEOPERATOR-(VOLUME)const;,下列关于这个函数的叙述中,错误的是( )。
- A.这是运算符一的重载运算符函数
- B.这个函数所重载的运算符是一个一元运算符
- C.这是一个成员函数
- D.这个函数不改变类的任何数据成员的值
-
( )既可重载为一元运算符,又可重载为二元运算符。
- A.“*”
- B.“=”
- C.“=”和“*”
- D.“*”和“*++”
-
关系模型允许定义3类数据约束,下列不属于数据约束的是( )。
- A.实体完整性约束
- B.参照完整性约束
- C.属性完整性约束
- D.用户自定义完整性约束
-
有如下两个类定义:
ClaSSAA{};
classBB{
- AAv1,*v2;
- BBv3;
- int*v4; }; 其中有一个成员变量的定义是错误的,这个变量是( )。
- A.v1
- B.v2
- C.v3
- D.v4
-
某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)( )。
- A.3
- B.4
- C.6
- D.7
-
以下循环体的执行次数是( )。
voidmain( )
{inti,j;
for(i=0,j=1;i<=j+1;i+=2,j--)cout<
}
- A.3
- B.2
- C.1
- D.0
-
有如下程序:
#include
usingnamespacestd;
classMyClass{
public:
MyClass(){++count;)
~MyClass(){--count;)
staticintgetCount(){returncount;}
private:
staticintcount;
};
intMyClass::count=0;
intmain(){
MyClassobj;
cout<
MyClass*ptr=newMyClass;
cout<
deleteptr;
cout<
return0;
}
程序的输出结果是( )。
- A.121
- B.232
- C.221
- D.122
-
有下列程序:
#include
voidfun(char*a,char*b)
{
while(*a=='*')a++;
while(*b=*a){b++;a++;}
}
voidmain( )
{
char*s="*****a*b****",t[80];
fun(s,t);puts(t)
}
程序的运行结果是( )。
- A.*****a*b
- B.a*b
- C.a*b****
- D.ab
-
下列符号中可以用做C++标识符的是( )。
- A._radius
- B.foo~bar
- C.else
- D.3room
-
函数定义为Fun(int&i),变量定义n=100,则下面调用正确的是( )。
- A.Fun(20);
- B.Fun(20+n);
- C.Fun(n);
- D.Fun(&n);
-
有如下模板声明:
template
classA; 下列声明中,与上述声明不等价的是( )。
- A.template
classA; - B.template
classAt - C.template
classA; - D.template
classA;
- A.template
-
已知intm=10;在下列定义引用的语句中,正确的是( )。
- A.int&x=m;
- B.inty=&m;
- C.int&z;
- D.int&t=&m;
-
有以下程序:
#include(iostream)
usingnamespacestd;
intmain( )
{
intx=15:
while(x>10&&x<50)
{
x++;
if(x/3)
{
x++;break;
}
}
cout<
return0;
}
执行后的输出结果是( )。
- A.15
- B.16
- C.17
- D.18
-
下列程序的运行结果为( )。
#include(iostream.h>
template(classTT>
classFF
{TTa1,a2,a3;
public:
FF(TTb1,TTb2,TTb3){a1=b1;a2=b2.;a3=b3;)
TTSum( ){returna1+a2+a3;}};
voidmain( )
{FF
x(int(1.1),2,3),y(int(4.2),5,6); cout<
- A.6.115.2
- B.615
- C.615.2
- D.6.115
-
关于结构化程序设计原则和方法的描述错误的是( )。
- A.选用的结构只允许有一个入口和一个出口
- B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现
- C.不允许使用GOTO语句
- D.语言中所没有的控制结构,应该采用前后一致的方法来模拟