计算机类二级C++
2013年9月全国计算机等级《二级C++》上机临考冲刺试卷(7)
43 题含答案C++
1单选题1 / 43
索引属于( )。
查看答案
B. 内模式
2单选题2 / 43
下列语句中,与语句“n=(a>b?(b>c?1:0):0);”的功能等价的是( )。
查看答案
C. if(a>b)if(b>c)n=1;elsen=;elsen=0;
3单选题3 / 43
有以下程序:
#include
usingnamespacestd;
classR
{public:
R(intr1,intr2)
{R1=r1;
R2=r2;}
voidprint();
voidprint()const;
private:
intR1,R2;};
voidR::print()
{cout<<r1<<","<<r2<<endl;}
voidR::print()const
{cout<<r1<<","<<r2<<endl;}
intmain()
{Ra(5,4);
constRb(20,52);
print();
return0;}
执行后的输出结果是( )。
查看答案
B. 20,52
4单选题4 / 43
已经有“语句intm=10;”则下列表示引用的表示中正确的是( )。
查看答案
A. int&x=m;
5单选题5 / 43
有下列程序:
#include
voidmain( )
{intx=1,y=2,z=3;
if(x>y)
if(y
elseprintf("%d",++y);
printf(”%d\n”,x++);
}
程序的运行结果是( )。
查看答案
D. 1
6单选题6 / 43
下列关于析构函数的描述中,错误的是( )。
查看答案
A. 析构函数可以重载
7单选题7 / 43
派生类的成员函数不能访问基类的( )。
查看答案
C. 私有成员
8单选题8 / 43
有如下程序:
#include
usingnamespacestd;
classDA{
intk;
public:
DA(intx=1):k(x){}
~DA(){cout<<k;}
};
intmain(){
DAd[]={DA(3),DA(3),DA(3));
DA+p=newDA[2];
delete[]p;
return();
}
这个程序的输出结果是( )。
查看答案
C. 11333
9单选题9 / 43
有如下程序:
#include
usingnamespacestd;
classToy{
public:
Toy(char*_n){strcpy(name,_n);count++;)
~Toy( ){count一一;)
char*GetName( ){returnname;}
staticintgetCount( ){returncount;)
private:
charname[10];
staticintcount;
};
intToy::count=0;
intmain( ){
Toyt1("snoopy"),t2("Mickey"),t3("Barbie");
tout<<
return0;
)
运行时的输出结果是( )。
查看答案
C. 3
10单选题10 / 43
下列选项中不属于结构化程序设计方法的是( )。
查看答案
D. 司复用
11单选题11 / 43
下列叙述中正确的是( )。
查看答案
C. C程序书写格式自由,一个语句可以写在多行上
12单选题12 / 43
有如下程序:
#include
usingnamespacestd;
classTestClass
{public:
virtualvoidfunl()
{cout<<"funlTestClass";}
virtualvoidfun2()
{cout<<“fun2TestClass”;}};
classTestClassl:publicTestClass
{voidfun()
{cout<<“funlTestClassl”;}};
intmain()
{TestClassobj1,*P;
TestClasslobj2;
p=&obj2;
p->fun1();
p->fun2();
return0;}
该程序执行后的输出结果是( )。
查看答案
A. funlTestClasslfun2TestClass
13单选题13 / 43
下面关于运算符重载的描述错误的是( )。
查看答案
C. 运算符函数的调用必须使用关键字0perator
14单选题14 / 43
有如下程序:
#include
usingnamespacestd;
classMyClass{
public:
MyClass(intx):val(x){}
voidPrint()const{cout<<"const:val="<<<val<<'\t';}
voidPrint(){cout<<"val="<<val<<'t';}
private:
intval;
};
intmain(){
constMyClassobj1(10);
MyClassobj2(20);
obj1.Print();
obj2.Print();
return0;
}
程序的输出结果是( )。
查看答案
D. val=10va1=20
15单选题15 / 43
软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下列属于应用软件的是( )。
查看答案
B. 操作系统
16单选题16 / 43
有下列程序:
#include
#defineN4
voidfun(inta[][N],intb[])
{inti;
for(i=0;i
}
voidmain( )
{intx[][N]={{1,2,3},{4),{5,6,7,8),{9,10}),
y[N],i;
fun(x,y);
for(i=0;i
printf("\n");
}
程序的运行结果是( )。
查看答案
B. 1,0,7,0,
17单选题17 / 43
有如下的程序:
#include
#include
usingnamespacestd;
classMyString
{public:
MyString(constchar*s);
MyString(){delete[]data;}
protected:
unsignedlem
char*data;};
MyStrin9::MyString(constchar*s)
{len=strlen(s);
data=newchar[len+1];
strcpy(data,s);}
intmain()
{MyStringa("C++Programing");
MyStringb(a);
return0;}
在运行上面的程序时出错,出错的原因是( )。
查看答案
B. 没有定义实现深层复制的复制构造函数
18单选题18 / 43
设变量已正确定义并赋值,以下正确的表达式是( )。
查看答案
C. x=y+z+5,++y
19单选题19 / 43
下面描述中错误的是( )。
查看答案
A. 系统总体结构图支持软件系统的详细设计
20单选题20 / 43
程序段“intx=12;doubley=3.141593;printf(”%d%8.6'f",X,y);”的输出结果是( )。
查看答案
A. 123.141593
21单选题21 / 43
有如下程序:
#include
usingnamespacestd;
classB{
public:
virtualvoidshow(){cout<<"B";}};
classD:publicB{
public:
voidshow(){cout<<"D";}
};
voidfun1(B*ptr){ptr->show();
}voidfun2(B&ref){ref.show();
}voidfun3(BB){b.show();
}
intmain(){
Bb,*p=newD;
Dd;
funl(p);
fun2(b);
fun3(d);
return0;
}
程序的输出结果是( )。
查看答案
C. DBB
22单选题22 / 43
下列不构成无限循环的语句或语句组是( )。
查看答案
A. n=0;
do{++n;)while(n<=0);
23单选题23 / 43
有下列程序:
#include
voidmain( )
{
intx=8;
for(;x>0;x--)
{
if(x%3){printf("%d,",x--),continue;}
printf(”%d,”,--x);
}
}
程序的运行结果是( )。
查看答案
D. 8,5,4,2
24单选题24 / 43
设有下列程序段:
chars[20]="Beijing",*P;
P=S;
则执行“p=s;”语句后,下列叙述正确的是( )。
查看答案
A. 可以用*P表示s[0]
25单选题25 / 43
对于语句“cout<<setfill('*')<<setw(10)<<1<<serfill('*')<<setw(2)<
查看答案
A. *********1*2
26单选题26 / 43
若函数中有定义语句“intk;”.则( )。
查看答案
B. 这时k中的值无定义
27单选题27 / 43
下列程序段中的变量已正确定义:
for(i=0;i<4;i++,i++)
for(k=1;k<3;k++);printf("*");
程序段的输出结果是( )。
查看答案
D. *
28单选题28 / 43
下列程序中横线处应填入的语句是()。
classBase
{
public:
voidfun(){cout<<"Baseoffun"<
classDerived:publicBase
{
voidfun()
{
//显示基类的成员函数fun
cout<<"Derivedoffun"<
}
};
查看答案
C. Base::fun();
29单选题29 / 43
若有定义语句“inti=2,j=3;”,则表达式i/j的结果是( )。
查看答案
A. 0
30单选题30 / 43
下列叙述中错误的是( )。
查看答案
D. C程序中预处理命令行的处理是在程序执行的过程中进行的
31单选题31 / 43
下列关于栈的叙述正确的是( )。
查看答案
B. 栈按“先进后出”组织数据
32单选题32 / 43
对于类定义:
classA{
public:
virtualvoidfuncl(){}
voidfunc2(){}
};
classB:publicA{
public:
voidfuncl(){cout<<"classBfunc1"<<endl;}
virtualvoidfunc2(){cout<<"classBfunc2"
< <endl;}
};
下面正确的叙述是( )。
查看答案
C. B::func1( )是虚函数,而A::fune2( )不是虚函数
33单选题33 / 43
有下列程序:
#include
voidmain( )
{char*a[]={"abed","ef","gh","ijk");inti;
for(i=0;i<4;i++)printf("%C",*a[i]);
}
程序运行后的输出结果是( )。
查看答案
A. aegi
34单选题34 / 43
函数swap(a,n)可完成对a数组从第1个元素到第n个元素两两交换。其中b[o]=1;b[1]=2;swap(b,2)。在运行调用函数中的语句后,b[0]和b[1]的值分别为( )。
查看答案
D. 2,1
35单选题35 / 43
已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,则( )。
查看答案
D. 若FB定义在FA之后,则FB的原型必须出现在FA的定义之前
36单选题36 / 43
下列表达式的值为false的是( )。
查看答案
C. 3&0&&l
37单选题37 / 43
下列叙述中错误的是( )。
查看答案
C. #defineMAX是合法的宏定义命令行
38单选题38 / 43
有下列程序:
#include
voidmain( )
{inti=5;
do
{if(i%3=1)
if(i%5==2)
{printf("*%d",i);break;}
i++:
}while(i!=O);
printf("\n");
}
程序的运行结果是( )。
查看答案
A. *7
39单选题39 / 43
类A是类B的友元,类B是类C的友元,则下列说法正确的是( )。
查看答案
D. 以上都不对
40单选题40 / 43
有如下程序:
#included
usingnamespacestd;
classTestClass
{inta;
pubIic:
TestClass(intx){a=x;}
voidshow(){cout<
classTestClassl:publicTestClass
{intb;
public:
TestClassl(inti):TestClass(i+1),b(i){}
voidshow(){cout<
intmain()
{TestClassb(5),*P;
TestClassld(1):
p=&d;
p->show();
return0;}
该程序运行后的打印结果是( )。
查看答案
D. 2
41主观题41 / 43
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:
number=1
number=10
number=100
注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include
classTC
{
public:
TC(inti)
{
number=i;
}
voidSetNumber(intm)
{
number=m;
}
intGetNumber()const
{
returnnumber;
}
voidPrint()const
{
cout<<"number="<<number<
}
private:
intnumber;
};
voidmain()
{
//********error********
TCobjl;
objl.Print();
TCobj2(3);
//********error********
objl.number=10;
//********error*‰******
TC.SetNumber(100);
objl.Print();
obj2.Print();
}
查看答案
(1)应改为“TCoBjl(1);”。
(2)应改为“0Bj1.SEtNumBEr(10);”。
(3)应改为“0Bj2.SElNumBEr(100);”。
42主观题42 / 43
使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成以下两个函数。
(1)funl(intn)求出n的阶乘,必须使用递归调用。
(2)fun2(intn)求出n的阶乘,不能使用递归调用。如果n小于1则返回0。
注意:不能修改函数的其他部分。
试题程序:
#include
//必须使用递归
intfunl(intn)
{
}
//不能使用递归
intfun2(intn)
{
}
voidmain()
{
inti;
cout<<"请输入一个整数:"<
cin>>i;
cout<<"输入数字的阶乘是:"<<funl(i)<
cout<<"输入数字的阶乘是:"<<fun2(i)<
return;
}
查看答案
//必须使用递归
jntFunl(intn)
{
iF(n<=0)rEturn0;
iF(n==1)rEturn1;
rEturnn*Funl(n-1);
};
//不能使用递归
intFun2(intn)
{
iF(n<=0)rEtturn0;
intrEs=1:
For(inti=1;
i<=n;i++)
{
rEs*=i;
}
rEturnrEs;
}
43主观题43 / 43
使用VC++6.0打开考生文件夹下的源程序文件3.cpp。类People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓名,然后输出这个姓名到屏幕。
其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)完成类的构造函数功能,请在注释1后添加适当的语句。
(2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。
(3)定义类的友元函数fun,请在注释3后添加适当的语句。
(4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。
注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。
试题程序:
#include
classPeople
{
public:
//********1********
{
inti;
for(i=0;sUserName[i]!=0;i++)
{m_UserName[i]=sUserName[i];
}
//********2********
m_Old=nOld;
}
private:
charm_UserName[32];
intm_Old;
//********3********
};
voidfun(char*s,People&personl,People&person2
{
//********4********
if()
{
for(inti=0;personl.m_UserName[i]!=0;i+
+)
{
s[i]=personl.m_UserName[i];
s[i+1]=0;
}
}
else
{
for(inti=0;person2.m_UserName[i]!=0;i+
+)
{s[i]=person2.m_UserName[i];
s[i+1]=0;
}
}
}
voidmain()
{
chars[32];
Peoplepl("abc",20);
Peoplep2("def",30):
fun(S,p1,p2);
cout<<s<
return;
}
查看答案
(1)应添加“PEoplE(ChAr*sUsErNAmE,intnOlD)”。
(2)应添加“m_UsErNAmE[i]=0;”。
(3)应添加“FriEnDvoiDFun(ChAr*s,PEoplE&pErsonl,PEoplE&pErson2);”。
(4)将“iF()”补充完整为“iF(pErsonl.m_OlD)pErson2.mOlD)”。