11.执行下列程序后的输出结果是( )
int fun(int x1,int x2)
{ int x;x1>x2?(x=3):(x=4);return(x+x1); }
main()
{ printf("%d\n",fun( 7,8));}
A.9
B.10
C.11
D.12
【解析】本程序的输出是函数调用“fun(7,8)”的返回值。分析函数调用“fun(7,8)”的过程如下:将实参7传给形参x1,实参8传给形参x2,然后执行函数体。由于x1>x2的条件不成立,所以执行“:”号后的赋值表达式:x=4。返回语句中的表达式是“x+x1”,返回值是:4+7=11。所以本题答案应选C.
【参考答案】C
12.下列程序段的输出是( )
typedef union{ long x[2];
short y[4][5];
char z[10];
}TYPE1;
TYPE1 u1;
printf("%d\n", sizeof(u1));
A.8
B.10
C.40
D.58
【解析】程序的开始用“typedef"定义了用户自定义数据类型符“TYPE1”,这个用户自定义的数据类型符对应的是一个共用型。然后使用"TYPE1",定义了共用型变量u1,本段程序的输出就是这个共用型变量所占用的字书数。共用型变量占用的字节数就是其成员中占用字节数最多的成员占用的字节数。分析这个共用型的成员有3个:第1个成员是长整型数组,占用字节数为4*2=8;第2个成员是短整型数组,占用字节数为2*4*5=40;第3个成员是字符型数组,占用的字节数为1*10=10。其中占用字节数最多的成员是第2个成员,其占用的字节数等于40。所以本题答案应选C。
【参考答案】C
13.不属于C语言保留字的是( )
A.for
B.goto
C.if
D.loop
【解析】关于保留字教材中有明确规定。显然for、goto、if都是组成语句的专用语句成份,都
是保留字。本题答案应选D。
【参考答案】 D
14.正确的C语言标识符是( )
A.num(10)
B.file bak
C.continue
D.class+2
【解析】标识符是字母、下划线开头的字母、数字、下划线组成的一串字符,而且不能是保留字。本题的4个备选答案中,只有答案B符合这个规定。本题答案应选B。
【参考答案】 B
15.设有定义语句“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
16.设有定义“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
17.设有“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
18.设有定义语句“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
19.定义一个具有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
20.设指针变量p1、 p2已经指向同一个数组的元素,则下列表达式中错误的是( )
A.p1=p2
B.p1==p2
C.p1-p2
D.p1+p2
【解析】教材中关于指向同一个数组的元素的指针变量之间可以进行的运算有如下的规定:可以进行关系运算、赋值运算、减法运算,所以本题答案应选D。
【参考答案】D
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |