1.若有说明:int a[10];,则对数组元素的正确引用是()。
A.a[10] B.a[3.5] C.a(5) D.a[10-10]
正确答案:D
解析:因为定义的数组包含10个元素,对数组元素引用的下标是从0~9。显然a[10]超出了数组的范围,A是错误的引用。因数组下标的数据类型必须是整型,所以B是错误的。数组引用应使用中括号,小括号是非法的,所以C也是错误的。故正确答案是D,即引用a[0]。
2.设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是( )。
A.c1^c2 B.c1&c2 C.~c2 D.c1|c2
正确答案:A
解析: 92的二进制数是1011100。
A表示按位 异或 1011100 ^1011100 =0000000
B表示按位 与 1011100 &1011100 =1011100
C表示按位 取反 ~1011100=0100011
D表示按位 或 1011100 | 1011100 =1011100
3.下列给定程序中,函数fun的功能是:进行数字字符转换。若形参ch中是数字字符’0’~’9’,则将’0’转换成’9’,‘1’转换成’8’, ‘2’转换成’7’,…, ‘9’转换成’0’;如果是其他字符则保持不变,并将转换后的结果作为函数值返回。请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
试题程序:
#include<stdio.h>
_____ fun(char ch)
{
if(ch>='0'&& _______)
return'9'-(ch- ______);
return ch;
}
main( )
{
char c1,c2;
printf("\nThe result:\n");
c1='2';
c2=fun(c1);
printf("c1=%c c2=%c\n",c1,c2);
c1='8';
c2=fun(c1);
printf("c1=%c c2=%c\n",c1,c2);
c1='a';
c2=fun(c1);
printf("c1=%c c2=%c\n",c1,c2);
}
A.int ch<=‘9’ ‘0’ B.char ch<=‘9’ ‘0’ C.char ch<=‘9’ 0 D.int ch<=‘9’ 0
正确答案: A B
解析:AB输出结果都对,都要做类型转换。A项,返回char,那么if条件里面做了隐式类型转换:int数字转成char。B项,返回int,那么main中赋值给char变量的时候做了类型转换,int转char。