2013年9月全国计算机等级《二级C++》命题预测试卷四
-
(1)将“TC(inti,intj)”补充完整为“TC(inti,intj):Num2(j)”。
(2)应添加“friendvoidfunc;”。
(3)应添加“intTC::Num3=4;”。
(4)将“obi.AddNum”补充完整为“obj.AddNum(2);”。
【解析】本题在第1处完成类的构造函数初始化类的成员变量,常数据成员也必须初始化,并且不能被更新,常数据成员的初始化只能通过构造函数的成员初始化类表进行,因此第1处的语句应为“TC(inti,intj):Num2(j)”,i用来初始化Num1和Num3,j初始化Num2。第2处完成fune的函数定义,由审题分析可知,函数fune为类的友元,故第2处的语句应为“friendvoidrune;”。第3处的语句是静态成员的初始化,静态数据成员的初始化格式为“(数据类型)<类名>::<静态数据成员)=<初始值>”,因此第3处的语句应为“intTC::Num3=4;”。成员函数AddNum带有一个整型参数,因此调用此函数时必须有参数传入,可由程序运行结果分析得知传入的参数值的大小。在fun函数内,定义TCobj(1,2)后,obj.Num1=1,obj.Num2=2,Num3=16+1=17,obj.Num1=4,Numl为4,obj。Num2为常数据成员,其值不会改变,调用AddNum函数后调用显示函数显示成员变量值,可知Num3为19,因此AddNum的参数为19-17=2,即第4处的语句应为“obj.AddNum(2);”。
-
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,即使程序在屏幕输出以下类似内容:
0012FF6810012FF3C5
0012FF6C20012FF444
0012FF7030012FF4C3
0023FF7440012FF542
0012FF7850012FF5C1
006AFDCC~006AFDEF数据可能因为机器的不同,程序输出的内容会有差异。只要相差为4的连续地址即可。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include
usingnamespacestd;
intmain()
{
int*P,a[5]={1,2,3,4,5};
double*q,b[5]={5.0,4.0,3.0,2.0,1.0);
intx;
P=a;
q=b;
//********error********
for(x=0;x<=5;X++)
//********error********
cout<
(q+x)<
return0;
}
-
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。
函数sort(int&m,int&n,int&1)实现将3个整数m,n,1由大到小输出。m最大,1最小。程序实现时,可以把最大的数放到m上,先将m与n进行比较,如果m
将函数sort(int&m,int&n,int&1)补充完整,实现3个数的排序。
注意:请勿改动主函数。
试题程序:
#include
voidsort(int8Lm,int&n,int&1)
{
}
intmain
{
intx=9:
inty=13;
intz=-3:
sort(X,y,z);
cout<
return0;
}
-
对如下二叉树进行后序遍历的结果为( )。
- A.ABCDEF
- B.DBEAFC
- C.ABDECF
- D.DEBFCA
-
在C++中,cin是一个( )。
- A.类
- B.对象
- C.模板
- D.函数
-
下列关于运算符重载不正确的是( )。
- A.运算符重载不能改变运算符的操作数个数
- B.运算符重载不能改变运算符的优先级
- C.运算符重载不能改变运算符的结合性
- D.运算符重载能改变对预定义类型数据的操作方式
-
若要对Date类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。
- A.Data+(Data);
- B.Dataoperator+(Data);
- C.Data+operator(Data);
- D.operator+(Data.Data);
-
C++语言本身没有定义I/O操作,但I/O操作包含在C++实现中。C++标准库iostream提供了基本的I/O类。I/O操作分别由两个类istreanl和( )提供。
- A.fstream
- B.iostream
- C.ostream
- D.cin
-
下面程序的运行结果为( )。
#include
classA
{
intnum;
public:
- A(inti){num=i;)
- A(A&a){num=a.num++;} voidprint(){cout<
- Aa(1),b(a);
- A.print();
- B.print(); }
- C.11B.12
- D.21D.22
-
下列控制格式输入输出的操作符中,能够设置浮点数精度的是( )。
- A.setprecision
- B.setw
- C.setfill
- D.showpoint
-
下面程序的结果是( )。
#include(iostream.h>
classA
{
inta;
public:
- A( ):a(1){} voidshowa( )(cout<};
- classB {
- inta; public:
- B( ):a(2){} voidshowa( ){cout<};
- classC:publicA,publicB {
- inta; public:
- C( ):a(3){} voidshowa( ){cout<}; voidmain( ) {
- CC; showa( ); }
- A.1
- B.2
-
在软件开发中,需求分析阶段可以使用的工具是( )。
- A.N—S图
- B.DFD图
- C.PAD图
- D.程序流程图
-
有以下程序:
#include(iostream.h)
voidfun(inta,intb,intc)
{a=456,b=567,C=678;}
voidmain( )
{
intx=10,y=20,z=30;
fun(x,Y,z);
cout<
}
输出结果是( )。
- A.30,20,10
- B.10,20,30
- C.456,567,678
- D.678,567,456
-
有如下程序:
#include
Usingnamespacestd;
ClassMyClass{
Public:
MyClass(){cout<<'*';}
MyClass(MyClass&a){cout<<'#';}
~MyClass(){cout<<'@';}
};
intmain(){
MyClassa;
MyClassb(a);Return0;
}
运行时的输出结果是( )。
- A.*@#@
- B.#@*@
- C.*#@@
- D.#*@@
-
有下列程序:
#include
voidfun(inta,intb)
{intt;
t=a;a=b;b=t;
voidmain( )
{intc[1O]={1,2,3,4,5,6,7,8,9,0},i;
for(i=0;i<10;i+=2)fun(c[i],c[i+1]);
for(i=0;i<10;i++)printf(”%d,”,c[i]);
printf("\n");
}
程序的运行结果是( )。
- A.1,2,3,4,5,6,7,8,9,0
- B.2,1,4,3,6,5,8,7,0,9
- C.0,9,8,7,6,5,4,3,2,1
- D.0,1,2,3,4,5,6,7,8,9
-
数据库设计包括两个疗面的设计内容,他们是( )。
- A.概念设计和逻辑设计
- B.模式设计和内模式设计
- C.内模式设计和物理设计
- D.结构特性设计和行为特性设计
-
执行语句:cout<
- A.123*******0K
- B.123#######OK
- C.123********0K********
- D.123#######OK########
-
设变量已正确定义,下列不能统计出一行中输入字符个数(不包含回车符)的程序段是( )。
- A.n=0;while((ch=getchar( ))!='\n')n++;
- B.n=0;while(getchar( )!='\n')n++;
- C.for(n=0;getchar( )!='\n';n++);
- D.n=0;for(ch=getchar( );ch!='n';n++);
-
有如下程序:
#include
usingnamespacestd;
intmain( ){
inta[6]={23,15,64,33,40,58};
ints1,s2;
s1=s2=a[0];
for(int*p=a+1;pif(s1>*p)s1=*p;
if(s2<*p)s2=*p;
}
cout<
return0;
}
运行时的输出结果是( )。
- A.23
- B.58
- C.64
- D.79
-
C++系统预定义了3个用于标准数据流的对象,下列选项中不属于此类对象的是( )。
- A.cout
- B.cin
- C.cerr
- D.cset
-
使用ifstream流类定义流对象并打开磁盘文件时,文件的隐含打开方式为( )。
- A.ios::in
- B.ios::out
- C.ios::inlios::out
- D.没有默认
-
有如下数组声明:intnum[10】;,下标值引用错误的是( )。
- A.num[10]
- B.num[5]
- C.num[3]
- D.num[0]
-
有下列程序:
#include
#include
intfun(intn)
{int*P;
p=(int*)malloc(sizeof(int));
*P=n;return*P;
}
voidmain( )
{inta;
- a=fun(10);printf("%d\n",a+fun(10));} 程序的运行结果是( )。
- A.0
- B.10
- C.20
- D.出错
-
下面程序的运行结果是( )。
#include
intfun(inta[],intn)
{
intresult=1;
for(inti=1;i(n;i++)
result=result*a[i];
returnresult;
}
voidmain( )
{
inta[3]={3,4,5);
coHt<
}
- A.12
- B.15
- C.20
- D.60
-
在下面的运算符重载函数的原型中,错误的是( )。
- A.Volumeoperator-(double,double);
- B.doubleVolume::operator-(double);
- C.VolumeVolume::operator-(Volume);
- D.Volumeoperator-(Volume);
-
在C++程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,则应该选用( )。
- A.内联函数
- B.重载函数
- C.递归调用
- D.嵌套调用
-
有如下程序:
#include
usingnamespacestd;
className{
charname[20];
public:
Name( ){
strcpy(name,"");cout<<'?';
}
Name(char*fname){
strcpy(name,fname);cout<<'?';
}
};
intmain( ){
Namenames[3]={Name(”张三”),Name(”李四”));
return0;
}
运行此程序输出符号?的个数是( )。
- A.O
- B.1
- C.2
- D.3
-
有如下程序:
#inelude
usingnamespacestd;
classTest
{
public:
Test(){n+=2;}
~Test(){n-=3;}
staticintgetNum(){returnn;}
private:
staticintn;
};
intTest::n=1;
intmain()
Test*P=newTest:
deleteP;
cout<<"n="<
return0;
}
执行后的输出结果是( )。
- A.n=0
- B.n=1
- C.n=2
- D.n=3
-
下列对于软件测试的描述正确的是( )。
- A.软件测试的目的是证明程序是否正确
- B.软件测试的目的是使程序运行结果正确
- C.软件测试的目的是尽可能地多发现程序中的错误
- D.软件测试的目的是使程序符合结构化原则
-
下列函数按每行8个输出数组中的数据。
voidfun(int*W.intn)
{inti;
for(i=0;i
{____
printf("%d",w[i]);
}
printf("\n")
}
下画线处应填入的语句是( )。
- A.if(i/8==0)printf("\n");
- B.if(i/8=0)continue;
- C.if(i%8==0)printf("\n");
- D.if(i%8==0)continue;
-
数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。
- A.DB包括DBS和DBMS
- B.DBMS包括DB和DBS
- C.DBS包括DB和DBMS
- D.没有任何关系
-
有如下程序:
#include
usingnamespacestd;
classC1{
public:
~C1( ){cout<<1;)
};
classC2:publicC1{
public:
~C2( ){cout<<2;)
};
intmain( ){
C2cb2;
C1*cb1:
return0;
}
运行时的输出结果是( )。
- A.121
- B.21
- C.211
- D.12
-
语句ofstreamf("DATA.DAT",ios_base::app|ios_base::binary);的功能是建立流对象f,试图打开文件DA-TA.DAT并与之连接,而且( )。
- A.若文件存在,将文件指针定位于艾件首;若文件不存在,建立一个新文件
- B.若文件存在,将其截为空文件;若文件不存在,打开失败
- C.若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件
- D.若文件存在,打开失败;若文件不杉在,建立一个新文件
-
有以下程序:
voidmain( )
{inta=5,b=4,c=3,d=2;
if(a>b>c)
cout<
elseif((C-1>=d)==1)
cout<
else
cout<
}
- A.2
- B.3
- C.4
- D.编译时有错,无结果
-
生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )。
- A.无需任何条件
- B.基类中显式定义了构造函数
- C.派生类中显式定义了构造函数
- D.派生类构造函数明确调用了基类构造函数
-
下列描述中,错误的是( )。
- A.公有继承时基类中的公有成员在派生类中仍是公有成员
- B.公有继承时基类中的保护成员在派生类中仍是保护成员
- C.保护继承时基类中的公有成员在派生类中仍是公有成员
- D.保护继承时基类中的保护成员在派生类中仍是保护成员
-
下面关于数组的初始化正确的是( )。
- A.charstr[]={'a','b','e'}
- B.charstr[2]={'a','b','e')
- C.charstr[2][3]={{'a','b'},{'C','d'},{'e','f'}}
- D.charstr()={'a','b','C'}
-
对于复制构造函数和赋值操作的关系,正确的是( )。
- A.复制构造函数和赋值操作是完全一样的操作
- B.进行赋值操作时,会调用类的构造函数
- C.当调用复制构造函数时,类的对象正在被建立并被初始化
- D.复制构造函数和赋值操作不能在同一个类中被同时定义
-
C++系统预定义了四个用于标准数据流的对象,下列选项中不属于此类对象的是( )。
- A.cout
- B.cin
- C.cerr
- D.cset
-
有如下程序:
#include(iostream>
usingnamespacestd;
classCon
{
charID;
public:
Con( ):ID('A){cout<<1;}
Con(charID):ID(ID){cout((2;)
Con(Con8Lc):ID(c.getlD( )){cout<<3;}
chargetID( )const{returnID;}
};
voidshow(Conc){cout<
intmain( )
{
Conc1;
show(c1);
Conc2('B');
show(c2);
return0;
执行上面程序的输出结果是( )。
- A.13A23A
- B.23A13B
- C.13A23B
- D.13823A
-
已知Value是一个类,Value是Value的一个对象。
下列以非成员函数形式重载的运算符函数原形中,正确的是( )。
- A.Valueoperator+(Valuev,inti);
- B.Valueoperator+(Valuev=value,inti);
- C.Valueoperator+(Valuevinti=O);
- D.Valueoperator+(Valuev=value,inti=O);
-
下列关于运算符函数的描述中,错误的是( )。
- A.运算符函数的名称总是以0perator为前缀
- B.运算符函数的参数可以是对象
- C.运算符函数只能定义为类的成员函数
- D.在表达式中使用重载的运算符相当于调用运算符重载函数
-
有如下程序:
#include
usingnamespacestd;
classBase{
public:
virtualvoidfunctionl(){cout<<'0';}
voidfunction2(){out<<'1';}
};
classDerived:publicBase{
oublic:
voidfunctionl(){cout<<'2';}
voidfunction2(){cout<<'3';}
};
intmain(){
Base*p=newDerived();
p->functionl();
p->function2();
return0;
}
运行时的输出结果是( )。
- A.01
- B.21
- C.03
- D.23