A、trueB、false
C、1D、0
22.若w是一个bool型变量,则w||5的值是。
A、trueB、false
C、与w的值相同D、与!
w的值相同
23.已知一正常运行的程序中有这样两个语句:
int*p2=&x,*p1=d1;
*p2=*d2;
由此可知,变量d1和d2的数据类型分别是。
A、int和intB、int*和int
C、int*和int*D、int和int*
24.要使指针变量P指向一维数组A的第五个元素(下标为4的那个元素),正确的赋值表达式是。
A、P=&A或P=&A[4]B、P=A+4或A=&A[4]
C、P=A+4或P=A[4]D、P=&A+4或P=A[4]
25.是给对象取一个别名。
A、指针B、引用
C、枚举D、结构
26.sizeof(double)是一个表达式。
A、整型B、双精度
C、不合法D、函数调用
27.要定义一个int型数组A,并使其各元素具有初值9,0,3,0,0,不正确的定义语句是。
A、intA[]={9,0,3};B、intA[]={9,0,3,0,0};
B、intA[5]={9,0,3};D、intA[5]={9,0,3,0};
28.下列while循环的次数是。
While(inti=0)i――;
A、0B、1
C、5D、无限
29.有关构造函数的说法不正确的是。
A、构造函数的名字和类的名字一样B、构造函数在声明对象时自动执行
C、构造函数无任何数据类型D、构造函数有且只有一个
30.以下类的说明中,指出有错误的地方。
classA
{
inta=1;//A
doubleb;//B
public:
A();//C
~A();//D
}
31.下列各函数中,不是类的成员函数。
A、构造函数B、析构函数
C、友员函数D、拷贝初始化构造函数
32.下列定义中,是定义指向数组的指针p。
A、int*p[5]B、int(*p)[5]
C、(int*)p[5]D、int*p[]
33.下列double型常量表示中,是错误的。
A、E15B、.35C、3E5D、3E-5
34.对字符数组初始化时,是正确的。
A、chars1[]=“abcd“;B、chars2[3]=“xyz”;
C、chars3[][3]={“abc”};D、chars4[2][3]={“xyz”,”mnp”};
35.下述关于break语句的描述中,是不正确的。
A、break语句可以用在循环体内,它将退出该重循环
B、开关语句中每个语句序列中必须有break语句
C、开关语句中default子句只能放在最后
D、开关语句中case子句后面的表达式可以是整型表达式
36.下面关于条件语句的描述中,是错误的。
A、if语句中只有一个else子句B、if语句中可以有多个elseif子句
C、if语句中if体不能是开关语句D、if语句的if体可以是循环语句
37.派生类的对象对它的基类中是可以访问的。
A、公有继承的公有成员B、公有继承的私有成员
C、公有继承的保护成员D、私有继承的公有成员
38.关于虚函数的描述中,是正确的。
A、虚函数是一个static类型的成员函数
B、虚函数是一个非成员函数
C、基类中说明了虚函数后,派生类中将其对应的函数不必说明为虚函数
D、派生类的虚函数和基类的虚函数具有不同的参数个数和类型
39.类A有一个实例化的常量对象a,那么下面的说法中不正确的是:
A.类A中的非静态数据成员一定都是常量成员。
B.通过a可以直接调用类A的常量成员函数。
C.a不能直接作为左值表达式使用。
D.a可以是静态常量对象。
40.在不考虑强制类型转换的情况下,关于类中常量成员函数的下列说法不正确的是 :
A.常量成员函数中不能修改本类中的非静态数据成员。
B.常量成员函数中可以调用本类中的任何静态成员函数。
C.常量成员函数的返回值只能是void或常量。
D.若常量成员函数中调用虚函数f,那么函数f在本类中也一定是一个常量成员函数。
41.n>=0的等价条件是。
A、n<0B、!
(n>=0)
C、!
(n<0)D、!
(n>0)
42.与if(x>0)if(y<0)x+=y;elsex-=y;等效的语句有。
A、if(x>0||y<0)x+=y;elsex-=y;B、if(x<=0||y>=0)x+=y;elsex-=y;
C、if(x>0)x=(y>=0?
x-y:
x+y);D、if(y>=0)if(x<=0)x-=y;elsex+=y;
43.要使语句p=newlong*;能够正确执行,p应定义为。
A、long***p;B、long**p;
C、longp;D、long*p;
44.有关构造函数的说法中不正确的是。
A、构造函数的名字和类的名字一样B、构造函数在说明类变量时自动执行
C、构造函数无任何函数类型D、构造函数有且只能有一个
45.以下语句不正确的是。
(设有intp,q)
A、p*=3B、p/=q
C、p+=3D、p&&=q
46.以下程序段。
intx=-1;
do{x=x*x;}while(!
x);
A、是死循环B、循环执行二次
C、循环执行一次D、有语法错误
47.当一个函数无返回值时,函数的类型应定义为类型。
A、voidB、任意
C、intD、无
48.C++语言中规定,函数的返回值的类型是由。
A、return语句中的表达式的类型决定B、调用该函数时的主调函数类型决定
C、调用该函数时系统临时决定D、在定义该函数时所指定的函数类型决定
49..的功能是对对象进行初始化。
A、构造函数B、数据成员
C、虚函数D、析构函数
50.如果一个函数无返回值,则只能作为被调用。
A、表达式B、语句
C、有参函数D、无参函数
51.下列说明中:
constchar*ptr;ptr应该是。
A、指向字符常量的指针B、指向字符的常量指针
C、指向字符串常量的指针D、指向字符串的常量指针
52.为了避免嵌套的if-else语句的二义性,C语言规定else总是与组成配对关系。
A、缩排位置相同的ifB、在其之前未配对的if
C、在其之前未配对的最近的ifD、同一行上的if
53.inta=3,*p=&a;其中p的值是。
A、变量a的地址值B、无意义
C、变量p的地址值D、3
54.下列运算符中,可以用于浮点数。
A、++B、%C、>>D、&
55.下列的是引用调用
A、形参参是指针,实参是地址值B、形参和实参都是变量
C、形参和实参都是数组名D、形参是引用,实参是变量
56.下列存储类标识符中,的可见性和存在性不一致。
A、外部类B、自定类C、内部静态类D、寄存器类
57.下面关于new和delete操作符的说法,哪个是不正确的:
A.使用new操作符,可以动态分配全局堆中的内存资源。
B.若p的类型已由A*强制转换为void*,那么执行语句deletep;时,类A的析构函数不会被调用。
C.实现全局函数时,new和delete通常成对地出现在由一对匹配的花括号限定的语句块中。
D.执行语句A*p=newA[100];时,类A的构造函数只会被调用1次。
58.类TM和类TN是两个独立的类,那么类TM中哪种形式的数据成员一定是不允许的:
A.TM*a;B.TN&a;C.TMa;D.TNa;
59.类B是通过public继承方式从类A派生而来的,且类A和类B都有完整的实现代码,那么下列说法正确的是:
A.类B中具有pubic可访问性的成员函数个数一定不少于类A中public成员函数的个数。
B.一个类B的实例对象占用的内存空间一定不少于一个类A的实例对象占用的内存空间。
C.只要类B中的构造函数都是public的,在main函数中就可以创建类B的实例对象。
D.类A和类B中的同名虚函数的返回值类型必须完全一致。
60.下列哪种函数可以是虚的:
A.自定义的构造函数B.拷贝构造函数C.静态成员函数D.析构函数
二、多项选择题
1.下列对指针变量的操作中,正确的是()
Achars[7];int*p=s=580;Bchars[6];int*p1=s;*p1=*p2;
Cchara[7],*p;p=a;Dinta[6],*p;p=&a;
Einta[8],*p=a;
2.下列一维数组的初始化语句中,正确的是()
Afloatb[5]={0,3.2,4.3};Bfloatb[5]={0,3,4.5,6,7,1.2};
Cchara[3]={‘a’};Dinta[]={0};
Estaticintb[3]={1,5};
3.若有说明inti=4,j=2,a[5][4],(*p)[4];和赋值语句p=a;则对数组元素
a[i][j]之值的正确引用是()
A*(p+4*i+j)B*(p+i)[j]C*(*(p+i)+j)D*p[i][j]
Ep[i][j]
4.以下叙述中正确的是()
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
E.用static标识的变量是全局变量
5.设有如下定义:
int(*ptr)();则以下叙述中不正确的是()
A.ptr是指向一维数组的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指向int型数据的指针
E.ptr是一个指向二维数组的指针变量
6.以下标识符中不合法的是()
A、pabB、a#bC、intD、2_and
7.已知:
chara[20],b[20];则以下正确的输入语句是()
A、gets(a,b);B、scanf(“%s%s”,a,b);
C、scanf(“%s%s”,&a,&b);D、gets(a),gets(b);
8.已知:
double*p[6];它的含义是()
A.p是指针数组
B.p是数组指针
C.p是含有6个元素的一维数组,数组中每个元素都是指向double型变量的指针
D.p是double型数组
9.已知:
inti,x[3][4];则能将x[1][1]的值赋给变量i的语句是()
A、i=*(*(x+1)+1)B、i=x[1][1]C、i=*(*(x+1))D、i=*(x[1]+1)
10.设有以下说明语句:
structstu
{inta;
floatb;
}stutype;
则下面叙述中正确的是()
A、struct是结构类型的关键字B、structstu是用户定义的结构类型
C、stutype是用户定义的结构类型变量名D、a和b都是结构成员名
11.若有说明:
long*p,a;则能通过scanf语句正确给输入项读入数据的程序段是( )
(A)*p=&a;scanf(“%ld”,p);(B)p=(long*)malloc(4);
(C)scanf(“%ld”,p=&a);(D)scanf(“%ld”,&a);
(E)scanf(“%ld”,p);a=*p;
12.下列一维数组的初始化语句中,正确的是( )
(A)floatb[5]={0,3.2,4.3};(B)floatb[5]={0,3,4.5,6,7,1.2};
(C)chara[3]={‘a’};(D)inta[]={0};
(E)staticintb[3]={1,5};
13.以下叙述中错误的是( )
A.定义函数时,形参的类型说明只能放在函数定义的第一行参数表中
B.return语句后边不能用表达式
C.如果函数的类型与返回值类型不一致,以函数类型为准
D.如果函数的类型与返回值类型不一致,以返回值类型为准
E.如果形参与实参的类型不一致,以实参类型为准
14.若有以下说明:
inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};
charc=’a’,d,g;
则数值为4的表达式是( )
(A)a[g-c](B)a[4](C)a[3](D)a[‘d’-‘c’](D)a[‘d’-c]
15.设有如下定义:
int(*ptr)();则以下叙述中不正确的是( )
A.ptr是指向一维数组的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指向int型数据的指针
E.ptr是一个指向二维数组的指针变量
16.以下标识符中不合法的是( )
A、pabB、a#bC、intD、2_andE、abc
17.已知:
chara[20],b[20];则以下正确的输入语句是( )
A、gets(a,b);B、scanf(“%s%s”,a,b);
C、scanf(“%s%s”,&a,&b);D、gets(a),gets(b);
E、getchar(a,b);
18.已知:
double*p[6];它的含义是( )
a)p是指针数组
b)p是数组指针
c)p是含有6个元素的一维数组,数组中每个元素都是指向double型变量的指针
d)p是double型数组
e)p是一个指向数组的指针
19.已知:
inti,x[3][4];则能将x[1][1]的值赋给变量i的语句是( )
A、i=*(*(x+1)+1)B、i=x[1][1]C、i=*(*(x+1))D、i=*(x[1]+1)E、i=x[1]+1
20.设有以下说明语句:
structstu
{inta;
floatb;
}stutype;
则下面叙述中正确的是( )
A、struct是结构类型的关键字B、structstu是用户定义的结构类型
C、stutype是用户定义的结构类型变量名D、a和b都是结构成员名
E、stutype是结构体类型名
21.若变量已正确定义并赋值,下面符合C语言语法的表达式是()
Aa:
=b+1Ba=b=c=2Ca+=b+3D*p++Ea=a+7=c+b
22.以下叙述中正确的是()
A.在不同的函数中可以使用相同名字的变量
B.函数中的形式参数是局部变量
C.在一个函数内定义的变量只在本函数范围内有效
D.在一个函数内的复合语句中定义的变量在本函数范围内有效
E.用static标识的变量是全局变量
23.设有如下定义:
int(*ptr)();则以下叙述中不正确的是()
A.ptr是指向一维数组的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指向int型数据的指针
E.ptr是一个指向二维数组的指针变量
24.以下叙述正确的是()
A.do-while语句构成的循环不能用其它语句构成的循环来代替
B.do-while语句构成的循环只能用break语句退出
C.由do-while语句构成的循环,其循环体至少执行一次
D.用do-while语句构成的循环,在while后的表达式为非零时结束循环
E.用do-while语句构成的循环,在while后的表达式为零时结束循环
25.若已定义:
inta[9],*p=a;并在以后的语句中未改变p的值,能表示a[1]地址的表达式是()
Ap+1Ba+1Ca++D++pE&a[1]
26.以下标识符中合法的是()
AdayBE2CintDab_cd
27.已知:
inta,*p=&a;则下列函数调用中正确的是()
Ascanf(“%d”,&a);Bscanf(“%d,p”);
Cprintf(“%d”,a);Dprintf(“%d”,*p);
28.设有说明int(*ptr)[M];其中的标识符ptr是()
A.M个指向整型变量的指针
B.数组指针
C.具有M个指针元素的一维指针数组,每个元素都只能指向整型变量
D.一个指向具有M个整型元素的一维数组的指针
29.已知:
staticinta[2][3]={2,4,6,8,10,12};正确表示数组元素的是()
A*(a+1)B*(a[1]+2)C*(*(a+1)+1)Da[0][0]
30.若有以下说明和语句:
structstudent
{intage;
intnum;
}std,*p;
p=&std;
则以下对结构变量std中成员age的引用方式正确的是()
Astd.ageBp->ageC(*p).ageD*p.age
三、填空题:
1.字符串“Hello”的长度是个字节,存储时占有个字节的空间。
2.字符串“C:
\\DOS\\DATA.DAT”所表示的全路径文件名是。
3.如果x的值为34,y的值为-7,则执行if(x>0)cout<<’A’;if(y<-8)cout<<’B’;屏幕上显示的是。
4.与if(READY)if(OK)y=-1;elsey=0;elsey=1;等效的赋值语句是。
5.执行inti,s;
for(i=8,s=0;i>0;i--)s+=i;
while(++i<5)s+=i;
后,s的值是。
6.字符串“ccut\nsoft”的长度是。
7.执行for(inti=23;i>0;i--)cout<<’*’;将输出个*号。
8.指针变量保存的不是一般的数据值,而是程序中另一个对象的。
9.一个类有个析构函数。
10.执行intx=5,y;y=++x-3;后,x的值是,y的值是。
11.利用操作符++,