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+3
B.*p+4
C.*(p+4)
D.*(s+3)
【解析】分析四个备选答案,可以看出是用指针法来引用数组a的元素。当指针变量p已经指向数组。的首地址后(正如本题那样),*(p+i)和*(s+i)都是数组元素a[i]。对于备选答案A:*p就是数组元素。a[0],其值为2,再加3结果为5,不符合题意。同样道理,备选答案B中的*p十4的值为6,也不符合题意。对于备选答案C:*(p+4)代表数组元素a[4],其值为10,也不符合题意。显然本题答案应选D。因为*(s+3)就是数组元素s[3],其值为8。
【参考答案】 D
82.下列数据类型中不属于构造类型的是 ( )
A.数组型
B.结构型
C.共用型
D.枚举型
【解析】教材中明确指出:构造类型只包括:数组型、结构型。共用型三种,所以本题答案应选D。
【参考答案】D
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |