D. 2
逗号表达式从左到右开始做,并输出最后一个表达式,所以答案是2+(5+1)=8
参考答案: B
6、C语言中运算对象必须是整型的运算符是
(2分) A. %= B. / C. = D. 〈=
只有整数才可以进行取余运算呀。
参考答案: A 7、 若有以下程序段, int c1=1,c2=2,c3; c3=1.0/c2*c1;
则执行后,c3中的值是 (2分)
A. 0
B. 0.5 C. 1 D. 2
参考答案: A
16、若有条件表达式 (exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是 (2分) A. (exp==0)
B. (exp!=0)
C. (exp==1) D. (exp!=1)
exp 是一个变量。 这个条件表达式的意思是,如果(exp)为真,则执行 a++,否则执行b--。 而只要变量exp的值不为0(也就是false)(,exp)都为真(true)。比如exp==2或者exp==-1,(exp)都为真。 所以(exp)等价于(exp!=0),也就是使用 (exp!=0)?a++:36
b-- 程序也能达到同样的效果。所以选B 。
参考答案: B
18、下面的程序是______ main()
{ int x=3,y=0,z=0;
if (x==y+z) printf(\else printf(\} (2分)
A. 有语法错误不能过通过编译 B. 输出****
C. 可能通过编译,但是不能通过连接,因而不能运行 D. 输出####
参考答案: D 21、有以下程序段 int k=0
while(k=1)k++;
while 循环执行的次数是
(2分) A. 无限次
B. 有语法错,不能执行 C. 一次也不执行 D. 执行1次
k=1 是一条赋值语句,令 k 的值等于 1。语句 k = 1 的结果是 永远是 1 , while(k=1) = while(1) ,是死循环,执行无限次
参考答案: A
22、C语言中 while 和 do-while 循环的主要区别是 (2分)
A. do-while 的循环体至少无条件执行一次
B. while的循环控制条件比 do-while的循环控制条件更严格
C. do-while 允许从外部转到循环体内 D. do-while 的循环体不能是复合语句
参考答案: A
27、若有以下语句,则正确的描述是( )。 char x[]=”12345”;
37
char y[]={’1’,’2’,’3’,’4’,’5’}; (2分) A. x数组和y数组的长度相同
B. x数组长度大于y数组长度
C. x数组长度小于y数组长度 D. x数组等价于y数组
参考答案: B
30、以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是 main()
{int *p,*q,a,b; p=&a;
printf(\scanf(\}
(2分)
A. *p表示的是指针变量p的地址
B. *p表示的是变量a的值,而不是变量a的地址 C. *p表示的是指针变量p的值 D. *p只能用来说明p是一个指针变量
参考答案: B
33、表达式:10!=9的值是___ (2分) A. true B. 非零值 C. 0
D. 1
参考答案: D
39、C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符 (2分)
A. 必须为字母 B. 必须为下划线
C. 必须为字母或下划线
D. 可以是字母,数字和下划线中任一字符
参考答案: C
38
6
单选题:(每题2分,共80分)
2、C语言规定:在一个源程序中,main()函数的位臵( ) (2分)
A. 必须在最开始
B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后
参考答案: C
4、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是 (2分)
A. INPUT x、y、z;
B. scanf(\
C. scanf(\ D. read(\
参考答案: B 9、以下程序的输出结果是 main( )
{ int a=-1,b=4,k;
39
k=(++a<0)&&!(b--<=0);
printf(\,b); }
(2分) A. 1 0 4 B. 1 0 3 C. 0 0 3 D. 0 0 4
&&的优先级高于=,先计算&&左侧的表达式++a<0。先对a加1再与0比较大小,a=-1+1=0,++a<0为假即0,&&左侧的表达式的值为0,不再计算&&右侧的表达式的值,因此b的值不变仍然为4,整个逻辑表达式的值为0,则k被赋值为0。输出的结果为004
参考答案: D
10、表达式:10!=9的值是___ (2分) A. true B. 非零值 C. 0
D. 1
参考答案: D
12、设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是______. (2分)
A. 把x和y按从大到小排列 B. 把x和y按从小到大排列 C. 无确定结果 D. 交换x和y中的值
参考答案: D
13、有如下程序
main( ) {
int y=3,x=3,z=1;
printf(\}
运行该程序的输出结果是
40