一、选择题
1. 若有定义:inta=0,b=0, c=0, d=0; ,有C 语言表达式
行顺序的叙述正确是( )。
A. 先执行a++, 表达式a++的值为0,短路,得a++,执行它
B. 先执行a++,表达式a++的值为0; 再执行b++,表达式b++的值为0,由此可确定
值为0,因此执行d++
C. 先执行a++,表达式a++的值为1; 再执行b++,表达式b++的值为1, 由此可确定
值为1, 因此执行C++
D. 先执行b++,表达式b++的值为1; 再执行a++,表达式a++的值为1,由此可确定
值为1,因此执行C++
答:A
【解析】表达式1? 表达式2:表达式3, 若表达式1为真,则执行表达式2, 否则执行表达式3。逻辑与运算符遵循“短路求值”策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数,表达式>中,左操作数a++的值为0, 已经可以确定整个逻辑表达式的结果为0, 因此右操作数b++不再求解,直接执行表达式3, 即d++, A 项正确。
2. 若有说明语句
:则变量c 中存放的是( )。
A.2个字符
B.1个字符
C.3个字符
D. 说明语句不合法
答:B
【解析】用一对单引号括起来的单个字符为字符常量,以“\”开头的转义字符也是字符常量。“\”后可以为某些单个字符,也可以为八进制或十六进制数字,故变量c 中存放的是一个字符。
3 若有定义inta , b ;, 通过语句能把整数3赋给变量a , 5赋给变量.
b 的输入数据是( )。
A.35
B.3, 5
C.3;5
D.35
答:C
scanf 函数在输入字符型时,【解析】要求输入数据时按照一一对应的位置原样输入这些字符。
第 2 页,共 34 页 以下关于其执
根据语句scan
隔,故输入3; 5。
4. 以下选项中与即要求输入整型数3和5, 由于语句中间是由相语句功能不同的switch 语句是( )。
答:B
【解析】在switch 语句的执行过程中,执行完case 后面的语句后,如果遇到break 语句就停止,否则将继续执行下一个case 中的语句,直到遇到break 语句。B 项,当a==1是
a=b, 刚好和题干要求相反。
5. 有以下程序
程序的运行结果是( )。
A.345678
B.876543
C.1098765
D.321678
答:D
【解析】函数fun 的作用是交换
对其修改,在函数外部也会发生作用。与的值,数组是以指针的形式传递的,在函数内部的作用是把数组k 中的和,互换,和时
,把到输出,得到321678。 互换,执行完成后,数组k 变成
6. 设函数中有整型变量n ,为保证其在未赋值的情况下初值为0, 应选择的存储类别是 ( )。
A.auto
第 3 页,共 34 页
B.register
C.static
D.auto 或 register
答:C
【解析】静态存储类型定义变量在未对其初始化时会对其初始化为默认值,其中int 型的默认初始化是0,其他选项的存储类型不能保证。
7. 若有函数声明
:
A. 函数参数array ,ptr 都是指针变量
B. 函数参数array 不是指针变量,ptr 是指针变量
C. 调用函数时,实参数组的值将一一复制给array 数组
D. 调用函数时,array 是按值传送,ptr 是按地址传送
答:A
【解析】数组名为数组的首地址,也是指向数组的指针,所以array 和ptr 都是指针,A 项正确,B 项错误。调用函数时,将实参数组首地址赋给指针array , 而不是传递整个数组元素,C 项错误。调用函数时,ar-ray 与ptr 都是按地址传送的,D 项错误。
8. 若有以下程序
则程序的输出结果是( )。
A.13
B.10
C.11
D.15
答:C
【解析】default 也是关键字,起标号的作用,代表所有case 标号之外的那些标号。default 标号可以出现在语句体中任何标号位置上。在switch 语句体中也可以没有default 标号。
先判定case 语句,如果没有与判定值相等的标号,并且存在default 标号,则从default 标号后的语句开始执行。如果default 语句没有break ,则其下面的case 语句不加判定的继续执行(default
,直到遇到break 或switch 结尾。 位置在case 前面时)
第 4 页,共 34 页 以下叙述正确的是( )。