c语言题目

11. 有以下程序片段
int n=0,p;
do { scanf(%d",&p); n++; } while(p!=584&&n<3);
此处 do-while 循环的结束条件是
A. p的值不等于584并且n的值小于3
B. p的值等于584或n的值大于等于3
C. p的值等于584并且n的值大于等于3
D. p的值不等于584或n的值小于3
12. 下列说法中正确的是()
A. break 用在switch语句中,而continue用在循环语句中
B. break 用在循环语句中,而continue用在switch语句中
C. break能结束循环,而continue只能结束本次循环
D. continue能结束循环,而break只能结束本次循环
13. 执行以下程序段后,a,b,c的值分别是()
int a,b=10,c,x=9,y=5;
a=(--x= =y++)?--x:++y;
if(x<9)b=x++;c=y;
A. 9,9,9 B. 8,8,10 C.7,8,7 D.1,11,10
14. 执行下列程序段后,x、y和z的值分别是()
int x=9,y=20,z=5;
if(x>y) z=x;x=y;y=z;
A. 10,20,30 B. 20,5,10 C. 20,5,5 D. 20,30,20
15. 以下选项中不是合法的C语句的是()
A. {int i; i++; printf(“%d\n”,i);} B. ;
C. { ; } D. a=5,c=10

11.循环继续的条件是p!=584&&n<3即p不等于584且n<3,很自然的,终止的条件便是前面加个“非”,如果有离散数学的知识,那么可以很容易的知道,答案是p的值等于584或n的值大于等于3,即使没有离散数学的知识,根据常识,也很容易知道是这个答案。

12。A:break 可以用在switc和循环中,而continue只能用在循环中,因此A是说法是片面的,其实也不能说它错了,B正好相反,break能结束循环,而continue只能结束本次循环,因此C是对的,D正好说反了。

13.很明显,--x和y++并不相等,因此,执行的是++y,因此执行完a=(--x= =y++)?--x:++y;之后,x自减了一次,y自增了两次,因此此时x的值是8,y的值是7,a的值也是7
因为x比9小,因此执行if(x<9)b=x++;语句之后,b的值为8,x值为9,执行c=y;后,c的值是7,因此结果是7,8,7

14。因为x>y不成立,因此,不执行z=x,然后执行x=y;y=z,这样结果就很明显了, 20,5,5

15。A:复合语句,因此合法,B:空语句,也合法,C:复合语句里面只有一个空语句,所以也合法,D:后面没有分号,所以不是语句,只是一个表达式而已!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-28
11. B
12. C
13. C
14. C
15. D
第2个回答  2010-12-28
11.B. p的值等于584或n的值大于等于3
12.C. break能结束循环,而continue只能结束本次循环
13.C.7,8,7
14.C. 20,5,5
15.D. a=5,c=10
11题&&逻辑表达式一个为假就跳出;
12.一般概念;
13. a=(--x= =y++)?--x:++y; 结合题目:a=(8==5)?--x;++y; 因为--x没选择所以不进行操作而y变为了7,a=7 x还是8;这里清楚了下面的你都会的;
14 if(x>y) z=x;if的作用到这里;
15语句是{} 或表达式或加上分号(;)
希望采纳
相似回答