}//6分
训练第三套
一、单选题(每小题2分,共20分)
1.由C++源程序文件编译而成的目标文件的缺省扩展名为()。
A.objB.likC.exeD.cpp
2.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车
3.设x是一个bool型的逻辑量,y的值为10,则表达式x&&y的值为()。
A.1B.0C.与x值相同D.与x值相反
4.for语句能够被改写为()语句。
A.复合B.ifC.switchD.while
5.在下面的do循环语句中,其循环体被执行的次数为()。
inti=0;doi++;while(i*i<10);
A.4B.3C.5D.2
6.在下面的一维数组定义中,()语句有语法错误。
A.inta[]={1,2,3};B.inta[10]={0};
C.inta[];D.inta[5];
7.下面的()保留字不能作为函数的返回类型。
A.voidB.intC.newD.long
8.下面的函数声明中,()是“voidBC(inta,intb);”的重载函数。
A.intBC(intx,inty);B.voidBC(inta,charb);
C.floatBC(inta,intb,intc=0);D.intBC(inta,intb=0);
9.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为()。
A.nB.n+1C.n-1D.n-2
10.假定AB为一个类,则该类的拷贝构造函数的声明语句为()。
A.AB&(ABx);B.AB(ABx);C.AB(AB*x);D.AB(AB&);
二、填空题(每小题2分,共20分)
1.执行“cout<2.在C++每个程序行的后面或单独一行的开始使用注释的标记符为__________。
3.表达式float(25)/4的值为___________。
4.关系表达式x+y>5的相反表达式为____________。
5.假定一个二维数组的定义为“inta[3][6];”,则该数组含有__________个元素。
6.执行“typedefintABC[20];”语句把ABC定义为具有20个整型元素的________。
7.假定p所指对象的值为36,p+1所指对象的值为49,则*++p的值为________。
8.假定a是一个一维数组,则a[i]的指针访问方式为____________。
9.对一个类中的数据成员的初始化可以通过构造函数中的初始化表实现,也可以通过构造函数中的____________实现。
10.当一个类对象离开它的作用域时,系统将自动调用该类的____________。
三、写出下列每个程序运行后的输出结果(每小题6分,共30分)
1.#include
#include
intSD(inta,intb,charop){
switch(op){
case'+':
returna+b;
case'-':
returna-b;
default:
{cout<<"操作符op出错,退出运行!
";exit
(1);}
}
}
voidmain(){
intx=20,y=6;
cout<}
运行结果:
2.#include
#include
voidmain(){
char*a[5]={"student","worker","cadre","soldier","apen"};
char*p1;
p1=a[0];
for(inti=1;i<5;i++){
if(strcmp(a[i],p1)>0)p1=a[i];
}
cout<}
运行结果:
3.#include
intWF(intx,inty){
x=x+y;
y=x+y;
returnx+y;
}
voidmain(){
cout<}
运行结果:
4.#include
constintn=9;
voidmain(){
inta[n]={2,4,6,8,10,12,14,16,18};
ints=0;
for(inti=0;iif(i%3==0)s+=a[i];
}
cout<<”s=”<
}
运行结果:
5.#include
voidmain(){
int*d=newint[5];
inti;
for(i=0;i<5;i++){
d[i]=2*i+1;
cout<}
cout<delete[]d;
}
运行结果:
四、写出下列每