一、选择题
1. 有以下程序
程序运行后的输出结果是( )。
A.0
B. 随机值
C.15
D.16
答:B
【解析】sum 作为局部变量,没有显式初始化,sum 值代表原来内存中存储的对象,不可预知,程序结果是随机值。
2. 有以下程序:
程序运行后的输出结果是( )。
A.1
B.123
C.23
D.3
答:A 【解析】
和
,不执行if 后面的语句,所以最后输出只有1,故答案为A 选项。是转义字符,表示空字符,故成立,输出1; 是字符常量和0不等,
都是字符常量,因为
3. 有以下程序:
程序运行后的输出结果是( )。
A.02
B.13
C.57
D.12
答:D 【解析】具有短路效应,当前面的表达式结果为逻辑假时后面的表达式不在进行
的计算,k 的值为1, 所以结果为1和2。计算。k++首先去k 的值,为0, 为逻辑假不在进行
4. 有以下程序:
程序的运行结果是( )。
D.ab
答:C
【解析】函数fun 中有两个while 循环,第一个while 循环语句查找第一个非字符;第二个while 循环语句将a 所指向的字符赋值给b ,这个循环的作用是将a 中第一个非的后的字符都复制到b 中。整个函数fun 的功能时将a 字符串中讲第一个非的字符开始的字符赋值给b 。
5. 若有定义语句intb=2;, 则表达式的值是( )。
A.4
B.8
C.0
D.2
答:B
【解析】b=2, 转为二进制即为0010,首先将b 左移两位,变成1000,即十进制的8, 3llb 的值为真即为1, 最后计算8/1的值,为8。
6. 以下叙述中正确的是( )。
A. 语句和
并不等价
B. 对于字符串常量D. 在语句
答:B 系统已自动在最后加入了字符,表示串结尾 C. 对于一维字符数组,不能使用字符串常量来赋初值 中,数组str 的大小等于字符串的长度
AC 两项错误,可以直接用【解析】B 项正确,C 编译程序将自动在字符串常量最后添加
串的存储单元,因此数组str 的长度大于字符串的长度。
7. 有如下程序:
程序运行后的输出结果是( )。
A.FDBXX
B.FFFXX
C.FDBBB
D.ABCDE
答:A 字符串常量给一维字符数组赋初值,习惯上均省略花括号;D 项错误,’\0’会占用一个不属于字符
【解析】对数组进行初始化时,如果在说明数组时给出了长度,但没有给所有的元素赋予初始值,而只依次给前面的几个数组元素赋予初值,那么C 语言将自动对余下的元素赋初值,
即
程序执行过程为:执行for 循环,将数组首地址赋给指针prr ,依次遍历每
一个元素,如果数组元素为0则输出‘X ’,如果不为0则按照字母表输出字符‘A ’后第个字符。程序运行后的输出结果为:FDBXX ,故A 项正确。
8. 有以下程序