第 1 题 【 单选题 】
表达式117 % 16 的结果是( )。
A:0
B:5
C:7
D:10
解析:
%
是取模运算符,用于计算两个数相除后的余数。
- 计算
117 / 16
,结果是7
,余数是5
。- 因此,
117 % 16 = 5
。
答案:
B
第 2 题 【 单选题 】
下列选项中,字符数组定义正确的是( )。
A:char a[5] = "hello";
B:char a[ ] = "hello";
C:char a = "hello";
D:char a[6] = 'hello';
解析:
A:
char a[5] = "hello";
错误。"hello"
的长度为5,但字符数组需要6个空间(包括结尾的\0
),因此数组大小不足。B:
char a[ ] = "hello";
正确。编译器会自动计算数组大小,包括结尾的\0
,因此a
的大小为6。C:
char a = "hello";
错误。char
是单个字符类型,不能用于存储字符串。D:
char a[6] = 'hello';
错误。'hello'
是多字符字面量,其类型是int
,而不是字符串。正确的初始化方式应使用双引号。
答案:
B
第 3 题 【 单选题 】
定义int i = 0, a = 10; 执行表达式a = (i <= 0 ? 1 : 2) 后,a 的值是( )。
A:1
B:2
C:10
D:随机值
解析:
表达式
a = (i <= 0 ? 1 : 2)
是一个三元运算符表达式,其逻辑如下:
- 判断
i <= 0
:
- 已知
i = 0
,因此i <= 0
为true
。- 三元运算符
? :
的规则是:
- 如果条件为
true
,则结果为1
;- 如果条件为
false
,则结果为2
。- 由于
i <= 0
为true
,因此表达式的值为1
。- 最后,将
1
赋值给a
。
答案:
A
第 4 题 【 单选题 】
十进制数22.5625 转换成十六进制数是( )。
A:16.7
B:16.8
C:16.9
D:17.1
解析:
步骤一:转换整数部分(22)
- 用除16法转换整数部分:
- 22 ÷ 16 = 1 余 6
- 1 ÷ 16 = 0 余 1
- 将余数逆序排列,得到整数部分的十六进制值为 16。
步骤二:转换小数部分(0.5625)
- 用乘16法转换小数部分:
- 0.5625 × 16 = 9.0
- 取整数部分,得到小数部分的十六进制值为 .9。
合并结果
将整数部分和小数部分合并,得到十六进制数为 16.9。
答案:
C
第 5 题 【 单选题 】
定义int a[5] = {1, 2, 3, 4, 5}, *p = a, *q = p++; 那么*p 和*q 的值分别是( )。
A:2、3
B:3、2
C:3、2
D:2、1
解析:
定义数组和指针:
int a[5] = {1, 2, 3, 4, 5};
定义了一个数组a
,其元素为{1, 2, 3, 4, 5}<