A)1010 B)1212 C)1110 D)1113
4.已知函数的原型说明为intf(int&,char*);另有变量说明如下:
charstr[100];intk;
如要调用以上函数,那么正确的函数调用形式为。
A)f(str,&k);B)f(str[100],k);
C)f(k,str);D)f(str,&k);
5.设整型变量a表示天不下雨,整型变量b表示无任何会议通知,语句c表示我去图书官;则“如果天不下雨并且无任何会议通知我去图书官”正确表示的C++语句为。
A)if(a|b){c;}B)if(a&&b){c;}
C)if(a||b){c;}D)if(a
6.为了避免嵌套的块语句的二义性,C++语言规定“}”与配对。
A)编辑时在同一列上的“{”
B)其之前最近的还没有配对过的“}”
C)其之后最近的“{”
D)其之前最近的还没有配对过的“{”
7.设有:
inta=1,b=2,c=3,d=4,m=2,n=3;
执行(m=ad)后n的值为。
A)1B)2C)3D)4
8.在循环语句的循环体中使用break和continue语句的作用分别是:
。
A)二语句都结束循环B)结束本次循环和结束循环
C)二语句都结束本次循环D)结束循环和结束本次循环
9.对于for(intCount=1;Count<5;){;}语句,其循环体的执行情况是:
。
A)死循环B)至少执行一次C)至少执行二次D)不执行
10.下列叙述中,正确的是。
A)类的构造函数不可以重载B)类的析构函数不可以重载
C)一个类不一定有构造函数D)一个类不一定有析构函数
11.对于C++的函数,不正确的叙述是:
。
A)函数的定义不能嵌套,但函数的调用可以嵌套
B)函数体内不可以再定义一个函数,但函数体内可以调用另一个函数。
C)函数体内不可以再定义一个函数,但函数体内可以函数自身。
D)函数的定义和调用均可以嵌套
12.下面的说法不正确的是。
A)函数在重载时其函数名应相同
B)C++中所有运算符都可以重载
C)基类中定义了虚函数ab(int,int),若在派生类中重新定义为ab(int),则在派生类中,ab为函数重载
D)对于基类中定义的运算符重载函数,在派生类中不一定可继承。
13.若有说明char*(*f)(int);则以下是正确的。
A)f是一个返回值为字符型指针的函数
B)f是指向一个函数指针,该函数返回值为字符
C)f是指向一个函数指针,该函数返回值为字符型指针
D)语法错
14.以下正确的说明语句是。
A)int*b[]={1,3,5,7,9}
B)inta[5][5],*num[5]={&a[0],&a[1],&a[2],&a[3],&a[4]};
C)inta[5][5]={1,3,5,7,9};int*num[5]={a[0],a[1],a[2],a[3],a[4]};
D)inta[3][4],(*num)[4];num[1]=&a[1][3];
15.下面程序的运行结果是。
#include
structstu{
inti,j;
floatEng,Math,CPP;
};
voidmain(void)
{chara[]={'a','b','c','d'};
cout<<"i="<A.i=4B.i=20C.i=24D.i=35
16.下面程序的运行结果是。
#include
staticintc;
voidmain(void)
{
#ifc*3
inti=10.88;
cout<<"i="<
#else
intj=10000.99;
cout<<"j="<#endif
}
A.j=10000B.j=10.88C.j=10000.99D.j=10
17.下列叙述,正确的是。
A)派生类对象不可以赋给基类对象
B)派生类对象的地址不可以赋给基类的指针变量
C)基类对象不可以赋给派生类对象
D)通过指向基类的指针变量不可访问基类对象中的成员
18.下面的说法正确的是。
A)能由抽象类产生该抽象类的对象
B)在定义纯虚函数时,能定义函数的实现部分
C)若一个类没有定义析构函数,则系统不会自动为其产生一个缺省的析构函数
D)不可以把构造函数定义为虚函数
19.下面程序的输出是。
注:
sin(3.1415/2)=1;sin(10)=-0.544021;
#include
#include
intsin(intx)
{returnx;}
voidmain(void)
{intx=10;
floaty=3.1415/2;
cout<cout<}
A)101B)-0.5440211
C)-0.5440211.57075D)101.57075
20.执行以下程序时,调用构造函数(以下简称为构造)和完成拷贝的构造函数(以下简称为拷贝)的次数分别为是。
A)1次构造,1次拷贝B)1次构造,2次拷贝
C)2次构造,1次拷贝D)2次构造,2次拷贝
#include
classTest{
intx,y;
public:
Test(inta,intb)
{x=a;y=b;cout<<"调用了构造函数!
\n";}
Test(Test&t)
{x=t.x;y=t.y;cout<<"调用了完成拷贝的构造函数!
\n";}
voidShow()
{cout<<"x="<};
voidmain(void)
{
Testt1(1,1),t2(2,2);
t2=t1;
Testt3(t1);
}
二、填空(35分)
1.(3分)若x=0,y=1,z=2,则执行语句:
z=(++x)&&(y++);
执行完以上语句后,三个变量的值分别为:
x=1y=2z=1。
2.(2分)以下程序的输出结果是x=4.1,i=5
#include
floatp(float&x,int&i)
{x=x+1.5;i=i-x;returnx;}
voidmain(){
inti=10;
floatx=2.6,y;
y=p(x,i)-1;
cout<<"x="<3.(2分)以下程序的输出结果是10。
#include
voidmain(void)
{
intx=12;
do{
cout<<(x-=2)<<'\t';
}while(!
(--x));
}
4.(4分)运行以下程序的输出结果是
c(cr)d(cr)e(cr)f(cr)g(cr)h(cr){注:
(cr)—表示回车键}。
#include
voidmain(void)
{char*s="abcdef";
charc;
while(c=*s++)
switch(c-'2')
{
case0:
case1:
cout<<(char)(c+4);
case2:
cout<<(char)(c+4)<<’\n’;break;
case3:
cout<<(char)(c+3);
default:
cout<<(char)(c+2)<<’\n’;break;
}
cout<}
5.(3分)运行以下程序的输出结果是。
x=5y=10
x=10y=5。
#include
voidswap(int&p1,int&p2)
{intp;
p=p1;p1=p2;p2=p;}
voidmain(void)
{
intx=5,y=10;
cout<<"x="<swap(x,y);
cout<<"x="<6.(3分)以下程序的运行结果是-5,-12,-7。
#include
voidsub(intx,inty,int&z)
{z=y-x;}
voidmain(void)
{
inta,b,c;
sub(10,5,a);
sub(7,a,b);
sub(a,b,c);
cout<}
7.(4分)下面程序的输出是。
B类就是B类
A类就是A类
#include
classA{
public:
intx;
voidShow(){cout<<"A类就是A类\n";}
};
classB{
public:
inty;
voidShow(){cout<<"B类就是B类\n";}};
classC:
publicA,publicB
{public:
inty;};
voidmain(void)
{Cc1;c1.B:
:
Show();c1.A:
:
Show();}
8.(4分)下面程序的输出是x=1000
A:
:
p2()
z=3000
C:
:
p2()
#include
classA{
protected:
intx;
public:
A(){x=1000;}
virtualvoidp(){cout<<"x="<<