73.不属于C语言保留字的是( )
A.for
B.goto
C.if
D.loop
【解析】关于保留字教材中有明确规定。显然for、goto、if都是组成语句的专用语句成份,都
是保留字。本题答案应选D。
【参考答案】 D
74.正确的C语言标识符是( )
A.num(10)
B.file bak
C.continue
D.class+2
【解析】标识符是字母、下划线开头的字母、数字、下划线组成的一串字符,而且不能是保留字。本题的4个备选答案中,只有答案B符合这个规定。本题答案应选B。
【参考答案】 B
75.设有定义语句“double d1,d2;”,则表达式“d1=1,d2=d1+5/2”的值是( )
A.1
B.3
C.3.0
D.3.5
【解析】C语言规定,逗号表达式的计算是自左向右进行的,表达式的值等于右边表达式的值,因此,本题的答案应为表达式"d2=d1+5/2"的值。该表达式是赋值表达式,所以其值是赋予变量d2的值,也就是表达式"d1+5/2"的结果。计算时,需要先算"5/2",结果为整数2,再和double型的d1相加,结果是实数3.0。所以本题答案应选C
【参考答案】 C
76.设有定义“int x=8,y,z;”,则执行“y=z=x++,x=y==z;”后,变量x值是( )
A.0
B.1
C.8
D.9
【解析】这是逗号表达式组成的语句,要先计算“y=z=x++”,结果变量y和z的值均为8。注意++是后缀运算符,同时x等于9。再计算“x=y==z”,由于“==”优先于“=”,所以x的值等于“y==z”,而y和z值相等,所以运算结果为1,即x值为1。本题答案应选B。
【参考答案】 B
77.设有“int a=1,b=1;”,“printf("%d,%d",(a++,--b),b-1);”的输出是( )
A.1,-1
B.1,0
C.0,-1
D.0,0
【解析】printf()函数的功能是自右向左依次计算表达式的值,然后再按照自左向右的顺序输出各个表达式的值,所以题目中输出语句执行时,是依次计算下列两个表达式的值:
b-1 结果为0,注意变量b值不变;
(a++,--b)这是逗号表达式,先计算a++,结果变量a值为2;
再计算--b,结果变量b值为0;
整个逗号表达式的值就是--b的值,为0。
按照自左向右的顺序输出(a++,--b)和b-1的值,依次为0,0。本题答案应选D。
【参考答案】D
78.设有定义语句“char s[]="123";”,则表达式“s[3]”的值是 ( )
A.’1’
B.’3’
C.0
D.语法出错
【解析】字符数组s在定义时省略了数组长度,表示给每个数组元素均赋了初值。对本题来说,数组的长度为4;数组元素的值依次为:S[0]为'1'。S[1」为'2'。S[2]为'3'、S[3]为字符率结束标记符'\0',所以“s[3]”的值是'\0'。注意,这个字符的 ASCII代码值是整数 0,所以本题答案应选C。
【参考答案】 C
79.定义一个具有10个元素的整型数组,应当使用语句( )
A.int a[10];
B.int a[2,5];
C.int a[];
D.int *a[10];
【解析】分析备选答案 A:显然是正确的,本题答案应选 A。至于备选答案 B:其中的“[2,5]”在语法上是错误的;备选答案C:数组没有给初值而省略了数组长度,语法上也是错误的;备选答案D:定义的是具有10个元素的。指向整型数据的指针型数组。
【参考答案】A
80.设指针变量p1、 p2已经指向同一个数组的元素,则下列表达式中错误的是( )
A.p1=p2
B.p1==p2
C.p1-p2
D.p1+p2
【解析】教材中关于指向同一个数组的元素的指针变量之间可以进行的运算有如下的规定:可以进行关系运算、赋值运算、减法运算,所以本题答案应选D。
【参考答案】D
81.设有定义语句“int a[]={2, 4,6,8,10},*p=s;”,则值为8的表达式是( )
A.*p