计算机类二级C++
2013年9月全国计算机等级《二级C++》上机模考试卷(4)
43 题含答案C++
1单选题1 / 43
下列关于运算符函数的描述中,错误的是( )。
查看答案
C. 运算符函数只能定义为类的成员函数
2单选题2 / 43
有如下程序:
#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;
}
运行时的输出结果是( )。
查看答案
B. 21
3单选题3 / 43
有如下程序:
#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;
执行上面程序的输出结果是( )。
查看答案
C. 13A23B
4单选题4 / 43
已知Value是一个类,Value是Value的一个对象。
下列以非成员函数形式重载的运算符函数原形中,正确的是( )。
查看答案
B. Valueoperator+(Valuev=value,inti);
5单选题5 / 43
C++系统预定义了四个用于标准数据流的对象,下列选项中不属于此类对象的是( )。
查看答案
D. cset
6单选题6 / 43
下面关于数组的初始化正确的是( )。
查看答案
A. charstr[]={'a','b','e'}
7单选题7 / 43
对于复制构造函数和赋值操作的关系,正确的是( )。
查看答案
C. 当调用复制构造函数时,类的对象正在被建立并被初始化
8单选题8 / 43
下列描述中,错误的是( )。
查看答案
C. 保护继承时基类中的公有成员在派生类中仍是公有成员
9单选题9 / 43
生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )。
查看答案
D. 派生类构造函数明确调用了基类构造函数
10单选题10 / 43
有以下程序:
voidmain( )
{inta=5,b=4,c=3,d=2;
if(a>b>c)
cout<<d<
elseif((C-1>=d)==1)
cout<<d+1<
else
cout<<d+2<
}
查看答案
B. 3
11单选题11 / 43
语句ofstreamf("DATA.DAT",ios_base::app|ios_base::binary);的功能是建立流对象f,试图打开文件DA-TA.DAT并与之连接,而且( )。
查看答案
C. 若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件
12单选题12 / 43
有如下程序:
#include
usingnamespacestd;
classC1{
public:
~C1( ){cout<<1;)
};
classC2:publicC1{
public:
~C2( ){cout<<2;)
};
intmain( ){
C2cb2;
C1*cb1:
return0;
}
运行时的输出结果是( )。
查看答案
B. 21
13单选题13 / 43
数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是( )。
查看答案
C. DBS包括DB和DBMS
14单选题14 / 43
下列函数按每行8个输出数组中的数据。
voidfun(int*W.intn)
{inti;
for(i=0;i<n;i++)
{____
printf("%d",w[i]);
}
printf("\n")
}
下画线处应填入的语句是( )。
查看答案
D. if(i%8==0)continue;
15单选题15 / 43
下列对于软件测试的描述正确的是( )。
查看答案
C. 软件测试的目的是尽可能地多发现程序中的错误
16单选题16 / 43
有如下程序:
#inelude
usingnamespacestd;
classTest
{
public:
Test(){n+=2;}
~Test(){n-=3;}
staticintgetNum(){returnn;}
private:
staticintn;
};
intTest::n=1;
intmain()
Test*P=newTest:
deleteP;
cout<<"n="<<test::getnum()<
return0;
}
执行后的输出结果是( )。
查看答案
A. n=0
17单选题17 / 43
在下面的运算符重载函数的原型中,错误的是( )。
查看答案
A. Volumeoperator-(double,double);
18单选题18 / 43
在C++程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,则应该选用( )。
查看答案
A. 内联函数
19单选题19 / 43
有如下程序:
#include
usingnamespacestd;
className{
charname[20];
public:
Name( ){
strcpy(name,"");cout<<'?';
}
Name(char*fname){
strcpy(name,fname);cout<<'?';
}
};
intmain( ){
Namenames[3]={Name(”张三”),Name(”李四”));
return0;
}
运行此程序输出符号?的个数是( )。
查看答案
D. 3
20单选题20 / 43
下面程序的运行结果是( )。
#include
intfun(inta[],intn)
{
intresult=1;
for(inti=1;i(n;i++)
result=result*a[i];
returnresult;
}
voidmain( )
{
inta[3]={3,4,5);
coHt<<fun(a,3)<
}
查看答案
C. 20
21单选题21 / 43
有下列程序:
#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));}
程序的运行结果是( )。
查看答案
C. 20
22单选题22 / 43
有如下数组声明:intnum[10】;,下标值引用错误的是( )。
查看答案
A. num[10]
23单选题23 / 43
使用ifstream流类定义流对象并打开磁盘文件时,文件的隐含打开方式为( )。
查看答案
D. 没有默认
24单选题24 / 43
有如下程序:
#include
usingnamespacestd;
intmain( ){
inta[6]={23,15,64,33,40,58};
ints1,s2;
s1=s2=a[0];
for(int*p=a+1;p<a+6;p++){
if(s1>*p)s1=*p;
if(s2<*p)s2=*p;
}
cout<<s1+s2<
return0;
}
运行时的输出结果是( )。
查看答案
D. 79
25单选题25 / 43
C++系统预定义了3个用于标准数据流的对象,下列选项中不属于此类对象的是( )。
查看答案
D. cset
26单选题26 / 43
设变量已正确定义,下列不能统计出一行中输入字符个数(不包含回车符)的程序段是( )。
查看答案
D. n=0;for(ch=getchar( );ch!='n';n++);
27单选题27 / 43
数据库设计包括两个疗面的设计内容,他们是( )。
查看答案
A. 概念设计和逻辑设计
28单选题28 / 43
执行语句:cout<<setfill('*')<<setw(10)<<setrill('#')<<left<123<<"ok"<
查看答案
B. 123#######OK
29单选题29 / 43
有如下程序:
#include
Usingnamespacestd;
ClassMyClass{
Public:
MyClass(){cout<<'*';}
MyClass(MyClass&a){cout<<'#';}
~MyClass(){cout<<'@';}
};
intmain(){
MyClassa;
MyClassb(a);Return0;
}
运行时的输出结果是( )。
查看答案
C. *#@@
30单选题30 / 43
有下列程序:
#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
31单选题31 / 43
有以下程序:
#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<<x<<','<<y<<','<<z<
}
输出结果是( )。
查看答案
B. 10,20,30
32单选题32 / 43
下面程序的结果是( )。
#include(iostream.h>
classA
{
inta;
public:
A( ):a(1){}
voidshowa( )(cout<<a;}
};
classB
{
inta;
public:
B( ):a(2){}
voidshowa( ){cout<<a;}
};
classC:publicA,publicB
{
inta;
public:
C( ):a(3){}
voidshowa( ){cout<<a;}
};
voidmain( )
{
CC;
showa( );
}
查看答案
C. 3
33单选题33 / 43
在软件开发中,需求分析阶段可以使用的工具是( )。
查看答案
B. DFD图
34单选题34 / 43
下列控制格式输入输出的操作符中,能够设置浮点数精度的是( )。
查看答案
A. setprecision
35单选题35 / 43
下面程序的运行结果为( )。
#include
classA
{
intnum;
public:
A(inti){num=i;)
A(A&a){num=a.num++;}
voidprint(){cout<<num;}
};
voidmain()
{
Aa(1),b(a);
查看答案
C. 11
36单选题36 / 43
若要对Date类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。
查看答案
B. Dataoperator+(Data);
37单选题37 / 43
C++语言本身没有定义I/O操作,但I/O操作包含在C++实现中。C++标准库iostream提供了基本的I/O类。I/O操作分别由两个类istreanl和( )提供。
查看答案
C. ostream
38单选题38 / 43
下列关于运算符重载不正确的是( )。
查看答案
D. 运算符重载能改变对预定义类型数据的操作方式
39单选题39 / 43
对如下二叉树进行后序遍历的结果为( )。
查看答案
D. DEBFCA
40单选题40 / 43
在C++中,cin是一个( )。
查看答案
B. 对象
41主观题41 / 43
使用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<(p+x)<return0;
}
查看答案
(1)应改为“For(x=0;x<5;x++)”。
(2)应改为“Cout<<p+X<<""<<*(p+X)((…’<(q+x<<””<<*(q+x)<<EnDl;”。
42主观题42 / 43
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。
函数sort(int&m,int&n,int&1)实现将3个整数m,n,1由大到小输出。m最大,1最小。程序实现时,可以把最大的数放到m上,先将m与n进行比较,如果m<n,则将m与n的值进行交换,然后再用m与1进行比较,如果m<1,则将m与1的值进行交换,这样能使m最大,然后再将n与1进行比较,若n
将函数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;
}
查看答案
intt;
iF(m<n)
{t=m;m=n;n=t;}//*交换x,y的值*/
iF(m<1)
{t=m;m=1;1=t;}//*交换x,z的值*/
iF(n<1)
{t=n;n=1;1=t;)/*交换z,y的值*/
43主观题43 / 43
(1)将“TC(inti,intj)”补充完整为“TC(inti,intj):Num2(j)”。
(2)应添加“friendvoidfunc();”。
(3)应添加“intTC::Num3=4;”。
(4)将“obi.AddNum()”补充完整为“obj.AddNum(2);”。
查看答案
使用VC++6.0打开考生文件夹下的源程序文件3.Cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。
(1)完成TC的构造函数,请改正注释1后的错误。
(2)完成FunC函数定义,请改正注释2后的错误。
(3)初始化CmyClAss的成员变量Num3为4,请改正注释3后的错误。 (4)完成FunC函数,请改正注释4后的错误。
输出的结果为
Num1=12
Num2=18
Num3=16
Num1=4
Num2=2
Num3=19
注意:除在指定位置添加语句之外,不要改动程序中的其他内容。
试题程序:
#inCluDE<iostrEAm.h>
ClAssTC
{
puBliC:
//********1********
TC(inti,intj)
{
Numl=i;
Num3+=i:
}
voiDDisplAy()
{
Cout<<"Num1="<<Numl<<EnDl:
Cout<<"Num2="<<Num2<<EnDl;
Cout<<"Num3="<<Num3<<EnDl;
}
voiDADDNum(inti)
{
Num3+=i;
}
privAtE:
intNum1;
ConstintNum2;
stAtiCintNum3;
//********2********};
//********3********voiDFunC()
{
TCoBj(1,2);
oBj.Num1=4;
//********4********oBj.ADDNum();
ohj.DisplAy();
}
voiDmAin()
{
TCmyOBj(12,18);
myOBj.DisplAy();
runE(); rEturn;
}