一、选择题
1. 以下选项中错误的是( )。
A. B. C. D.
【答案】D 【解析】D 项,
表示a 不等于b 时,运算结果为1,或者为0; 而
^是一种语法错
误,是非运算,且是单目运算符,只要求有一个操作数,故两者不等价。
2. 以下选项中,合法的C 语言实数是( )。
【答案】B
【解析】实型常量指数形式由十进制数加阶码标志符号)组
成。
为指数形式实数,B 项正确。
阶数不是整数,A 项错误。E13阶码标志前
缺少十进制数,C 项错误。
3. 有以下程序
若想通过键盘输入,使得al 的值为12, a2的值为34, cl 的值为字符a ,c2的值为字符b , 程序输出结果是:12, a , 34, b ,则正确的输入格式是(以下□代表空格,代表回车)( )。
A. B. C. D. 【答案】A
【解析】因为空格和回车也是字符变量,所以在输入a 和b 时,它们的前面不能有空格和回车,否则将取到空格或者回车,而非a 和b ; int 类型不会取到空格和回车,所以12和34前面可以有空格和回车。在scanf 函数并没有使用通配符逗号,所以输入时不能输入逗号。
第 2 页,共 43 页
或以及阶码(只能为整数,可以带
缺少阶码,D 项错误。
4. 设有定义
A. B. C. D.
【答案】A
以下选项中能够使字符型指针c 正确指向一个字符串的是( )。
【解析】scanfO 函数是将C 定义为一个字符数组的数组名,选项C 是将c 定义为一个字符型变量,选项 D 应该是在指针的定义同时为它赋值,否则是不合法的。选项A 中定义字符数组str ,再将字符数组stt 的首地址 赋给字符型指针C 。
5. 有以下程序:
执行时输入:123, 则输出结果是( )。 A.1,2,3,2,3,3, B.1, 2, 3,
C.2, 3, 4, 3, 4, 4, D.1, 1, 1, 2, 2, 3 【答案】A
【解析】本题执行过程为:输入1, 匹配easel , 输出1, 然后执行b++得b=2, 再执行下一个case 的语句输出2,然后执行b++得b=3,继续执行default , 输出3; 输入2,执行case2, 输出2, 然后执行b++得b=3,执行default 输出3; 输入3,执行default 输出3。故A 项正确。
6. 有以下定义语句,编译时会出现编译错误的是( )。
【答案】C
【解析】本题中a 为一个字符型变量,只能为其赋值一个字符常量。C 项中量,所以会编译错误。BD 两项为转义字符,编译可以通过。
第 3 页,共 43 页
不是字符常
7. 下面选项中关于位运算的叙述正确的是( )。
A. 位运算符都需要两个操作数
B. 位运算的对象只能是整型或字符型数据 C. 左移运算的结果总是原操作数据2倍 D. 右移fe 算时,尚位总是补0 【答案】B
【解析】B 项正确,C 语言中,位运算的对象只能是整型或字符型数据,不能是其他类型的数据。A 项错误,位运算符中取反操作符只需要一个操作符;C 项错误,左移时,若左端移出的部分不包含有效二进制数1, 则每左移一位,相当于移位对象乘以2, 如果端移出的部分包含有效二进制数1,结论不成立;D 项错误,右移运算时,对于无符号整数和正整数,高位补0; 对于负整数,高位补1。
8. 若有定义
【答案】C
【解析】C 项错误,在C 语言的算术运算符中,取余运算符必须是整数。
A 项,赋值运算符的优先级高于“,”运算法,先进行赋值;B 项,将的计算结果赋给变量
9. 有以下程序:
右边的逻辑表达式
D 项,首先对变量a 求逻辑非操作,然后将结果赋值给变量i
的左右两侧的两个运算分量
则不符合C 语言规定的赋值语句是( )。
程序的运行结果是( )。 A.1, 2, 3, 4, B.3, 6, 9, 12, C.4, 7, 10, 13, D.1, 5, 9, 13, 【答案】C
第 4 页,共 43 页