一、单选题
第一题 表达式
117 % 16
的结果是( )。A. 0
B. 5
C. 7
D. 10
答案:B
解析:%求的是余数,117除以16的余数是5。
第二题 下列选项中,字符数组定义正确的是( )。
A.
char a[5] = "hello";
B.
char a[ ] = "hello";
C.
char a = "hello";
D.
char a[6] = 'hello';
答案:B
解析:考察字符数组定义与赋值。
定义一个字符数组并且用一个字符串常量初始化它时,数组的大小应该足够包含字符串常量的所有字符,包括结尾的空字符(‘\0’)。
在此题中,有一点需要注意:双引号带着的是字符串,字符串hello带有5个字符,但由于C语言风格的字符串要以空字符(‘\0’)结尾,实际上是需要6个字符空间才能存储整个字符串(包括结尾的 ‘\0’)。
因此A选项错误,正确应该是char a[6]="hello";
C选项是单一的字符,不能用双引号。
D选项的初始化用了单引号,错误。
字符数组的定义示例如下:
(1)char a[10]={‘h’,‘e’,‘l’,‘l’,‘o’}; 表示定义一个字符数组,含有10个元素,前面五个元素分别赋值为字母h,字母e,字母l,字母l和字母o,后面的元素赋值为空值,即null。
(2)char a[10]=“hello”; 和(1)相同,要注意,这里的元素个数一定要在字符串长度的基础上加1。
(3)char a[]=“hello”; 这种写法是没有固定元素个数,单独写是错误的,但如果有初始化,程序就会自动根据字符数组的实际长度进行调整。
第三题 定义
int i = 0, a = 10;
执行表达式a = (i <= 0 ? 1 : 2)
后,a 的值是( )。A. 1
B. 2
C. 10
D. 随机值
答案:A
解析:考察三目运算符
(i <= 0 ? 1 : 2)
转换成 if 语句:
if(i<=0)
a=1;
else
a=2;
定义中,int i = 0, a = 10;
i=0,因此a=1,所以选A。
第四题 十进制数
22.5625
转换成十六进制数是( )。A.