说明:为方便大家复习,在此把课程网站的自测题整理成了文档,并且对部分有错误的题目做了改正,虽然有答案,对不清楚的题目一定弄懂相关知识点!有解决不了的问题主动来问我!
第1次测试(1~2章)
1.如果 a=1,b=2,c=3,d=4, 则条件表达式 a<b?a:c<d?c:d 的值为__D__。
A.2 B.3 C.4 D.1
解答:条件运算符的结合方向为“自右向左” a<b?a:c<d?c:d相当于a<b?a:(c<d?c:d)
2. 设int x=-1;执行表达式++x||++x ||++x后,x的值是__A__。
A.1 B.2 C.3 D.0
解答:由于 第一次 ++x 结果是0 所以 再判断中间的那个++x 结果为1 ,“或(||)”运算结果为true,最后的那个++x 就不执行了。
3. 假设下面所有的变量均已定义为double型,下列赋值表达式不正确的是 B 。
A.x=-x B.x=3.5%2 C. z*=2.8/4 D.x=y=z
解答:% 取余运算,只能是整数运算
4. 设 char ch; 以下不正确的赋值语句是_ D____。
A.ch=68; B.ch=’ \123’; C.ch=’ \xef’; D.ch=“\\”;
解答:“”双引号括起来的表示:字符串
5. 下列哪一个是合法的实型字面常量 C 。
A.8E3.1 B.E5 C.234. D.234
6. 下列不正确的转义字符是__B___。
A.’\’ B.’81’ C.’\0’ D.’\\’
7. 设有语句int a=3;则执行了语句a+=a- =a*a;后,变量a 的值是 B 。
A. 9 B.-12 C.3 D.0
等价 a += (a -= (a*a)) 自右向左算 a*a = 9 , a = 3不变 a-= 9, a = a-9, a=-6 a+=-6, a = a+(-6), a=-12
8. 设m,n,a,b,c,d均为0,执行(m=a= =b)||(n=c= =d)后,m、n的值是 A 。
A.1,0 B.1,1 C.0,0 D.0,1
“==”为比较运算 因为a,b都为0,此时比较的结果返回值为1.m = a == b;既返回的值赋值给的了m,m的值就为1了。
“||”运行左右操作数的“或”运算,既判断 (m = a == b)、(n =c == d),两个操作的结果中是否有一,按照c的运算规则,如果“||”前一个运算的值为1,那么就不进行后一步的运算。那么n =c == d;就不会被执行,所以结果是m = 1,n = 0,不是两个数都为0。
“||”运行左右操作数的“或”运算,既判断 (m = a == b)、(n =c == d),两个操作的结果中是否有一,按照c的运算规则,如果“||”前一个运算的值为1,那么就不进行后一步的运算。那么n =c == d;就不会被执行,所以结果是m = 1,n = 0,不是两个数都为0。
9. 逗号表达式(a=4*5,a*2),a+15的值是_C___。
A.40 B.20 C.35 D.55
逗号 表达式,按顺序一个一个执行,然后把最后一个语句,当做整个逗号表达式的最后结
果, 先执行a=4*5=20,然后执行a*20=40当做整个表达式的结果,但这个结果并不赋给 aswitch case判断字符串,因为没有赋值给a,所以a还是20,最后求 a+15的值,=35
10. 下列变量定义及初始化中,错误的是__A____。
A.double a=1.2e0.5 B.long a=2L C.char a=’\72’ D.int a=0xFF
11. 若执行语句:int b,a = 12, n = 5; 表达式 a % = ( b=2 , n %=b ) + 4结果是 B 。
运算过程如下:先计算b=2,n%=b。前半部分先给b赋值为2,后一部分等价于n=n%b,此时b=2则运算后n=1,括号中的式子叫做“逗号表达式”,逗号表达式的值等于逗号后的值(规定)。因此括号的值为1,再看外面的整体则等价于a=a%(1+4),则a=12%5=2。最后结果为2
A.16 B.2 C.4 D.1
12. 以下运算符中优先级最低的是__B __。
A.关系运算符 B.赋值运算符 C.算术运算符 D.逻辑运算符
13. C++源程序文件扩展名的 C 。
A.obj B.c C.cpp D.exe
14. 下列ASCII码值最小的字符是__D___。
A.’6’ B.’b’ C.’A’ D.’\n’
15. 在C++语言中,设short int型占两个字节,下列不正确的short int型常数为__B____。
A.-32768 B.32768 C.032770 D.0xfa
short int 的取值范围为:-32768~32767,032770是八进制数,它的十进制为13816,0xfa是十六进制数,它的十进制为250。
16. 为表示关系x大于等于y,y大于等于z,正确的C++语言表达式是 C 。
A.x>=y>=z B.(x>=y) AND (y>=z) C.x>=y&&y>=z D. (x>=y)&(y>=z)
17. 关系运算符对两侧的运算对象的要求是 B 。
A.只能是0或非0值 B.可以是任意合法的表达式,两者类型不一定相同
C.只能是0或1 D.两个运算对象必须属于同一种数据类型
18. 下列哪一个不是面向对象方法的特征 B 。
A.继承性 B.开放性 C.封装性 D.多态性
19. 在 C ++语言中int, long, unsigned 和 char这四种类型数据的转换规律是__B___。
A.char->int->long->unsigned B. char->int-> unsigned->long
C. int->unsigned->long->char D. char-> unsigned->long->int
在C中,数据之间的运算必须是同类型的才能进行运算。如果类型不一致,就必须先转换成相同的类型,由低级别 → 高级别转换。本题中,数据类型级别由低到高分别为:char→int→unsigned→long。转换时由低级别向高级别转换。比如,有两个数的数据类型分别为:char型跟long型。 就要先char转换为long型(因为long级别比char高),再进行运算。但是不能理解为:先将char转换成int,再转换成unsigned,再转换成long。
20. 以下选项中可作为C++语言合法整数的是__A____。
A.0xafb B.0583 C.11010B D.x2b2
B项表示八进制,但出现了8,为不合法的数
第2次测试(第3章)
1.若int i=10; 执行下列程序后,变量i的正确结果是___D___。
switch ( i ) {case 9: i++;
case 10: i++;
case 11: i++; break;
default: i++; }
A.11 B. 10 C.13 D.12
2. 有语句定义:int x,y;则以下程序段中内循环体的执行次数是__D____。
for (i=5; i; i--)
for (j=0;j<4;j++) {…循环体….}
A. 25 B.24 C. 30 D.20
3. 下列程序段执行后,变量w的值为___D___。
int x=0,y=10,z=20,w=100;
if(x) w=x;
else if(y) w=y;
else if(z) w=z;
A.0 B.20 C.100 D.10
4. 以下关于switch语句和break语句的描述中正确的是 __C____。
A. 在switch语句中必须使用break语句 B. break语句只能用于循环语句中
C. 在switch语句中可以不使用break语句 D. break语句只能用于switch语句体中
5. C++ 语言中 while 和 do-while 循环的主要区别是__A____。
A. do-while的循环至少无条件执行一次,而while的循环体可能一次也不执行
B. while的循环控制条件比do-while的循环控制条件严格
C.do-while允许从外部转到循环体内
D. do-while的循环不能是复合语句
6. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和___A___等价。
A. k=a<=b; B. k=a<b?0:1; C. k=a>b; D.k=(a>b)?1:0;
7. 以下 for 循环是__B____。
for(x=0,y=0;(y!=123)&&(x<4);x++) y+=x;
A.循环次数不定 B.执行4次 C.无限循环 D.执行3次
8. 下列错误的语句是 ___C___。
A.if(1) cout<<a; B. if(a) cout<<a; C. if(a); a++; else a--; D. if(a>b) cout<<a;
9. 设所有的变量均为整型,下列循环执行结束后,变量m的值为___B___。
for (i=’a’;i<=’e’;i++)
{
m=1;
for (j=5;j>=0;j--)
m+=(i-100)*j;
}
A.0 B.16 C.1 D.15
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论