一、选择题
1. 下列叙述中正确的是( )。
A. 可以用关系运算符比较字符串的大小 B. 空字符串不占用内存,其内存空间大小是0 C. 两个连续的单引号是合法的字符常量 D. 两个连续的双引号是合法的字符串常量 【答案】D
【解析】A 项错误,关系运算符不能比较字符串大小,可以用函数库中的字符串比较函数来比较字符串的大小;B 项错误,空字符串占用一个字节的内存;C 项错误,字符常量是用单引号把一个字符括起来;D 项正确,两个连续的双引号是一个字符串常量,称为空串。
2. 若程序中有宏定义行:
#defineN100
则以下叙述中正确的是( )。
A. 宏定义行中定义了标识符N 的值为整数100
B. 在编译程序对C 源程序进行预处理时用100替换标识符N C. 上述宏定义行实现将100赋给标识符N D. 在运行时用100替换标识符N 【答案】D
【解析】D 项正确,预处理程序对源程序中所有使用宏名的地方进行直接替换。A 项错误,宏定义没有类型限制;B 项错误,预处理程序进行宏替换,而非编译程序;C 项错误,宏定义不是赋值操作,而是进行在预编译时进行替换。
3. 已定义以下函数
fun 函数返回值是( )。
A. —个整数 B. 不确定的值 C. 形参p 中存放的值 D. 形参p 的地址值 【答案】A
【解析】题目中fun ( )函数的返回表达式是
第 2 页,共 41 页
是形参p 所指内容的值,因为p 为int
型指针,所以该值是一个整数。
4. 若变量已正确定义为int 型,要通过语句
给a 赋
值1、给b 赋值2、给c 赋值3,以下输入形式中错误的是(u 代表一个空格)( )。
【答案】B
【解析】scanf 函数要求除格式控制符以外的字符都要原样输入。逗号是非格式符,所以需要原样输入,否则就不能正确读入数据。B 项前两个数据后面没有紧跟一个逗号,格式不匹配所以输入形式错误。
5. 以下选项中非法的C 语言字符常量是( )。
A. B. C. D. 【答案】A
【解析】A 项,
表示字符串,应该用双引号括起来。B 项,转义符
表示两位的十六进制数。
表示后退一格;C
项,表示八进制数;D 项,
6. 有以下程序
执行后的输出结果是( )。 A.1 B.2 C.4
D. 死循环 【答案】A
while 【解析】(--k )是先执行k 减1,然后判定k 是否等于0; 输出1; 接下来继续执行-k ,k 变成0, 不满足条件,循环结束。
7. 有以下程序:
第 3 页,共 41 页
是先执行k-=3,
k 的初始值是5, --k 后k 变成4, 进入循环体内部,然后输出k 的值。首先执行k-=3, 得到k 等于1,
程序运行的结果是( )。 A.1 B.2 C.3 D.4
【答案】B
【解析】fun 函数是一个递归函数,其功能是:当b 的值为零时,返回此时a 的值; 否则,
返回
即将a 和b 的值分别减1后返回
b 为零。执行过程为:执行fun 值2。
8. 若有以下定义和语句:
则值为6的表达式是(提示:
【答案】D
的优先级高于
( )。
返回
当b 不断递减时,a 也不断递减直到此时b=l,返回
返回a 的
【解析】定义指向结构体变量的指针P ,并将结构体数组首地址赋给加一指向数组第二个元素,其成员ri=6, D 项正确员5。
9. 以下程序:
第 4 页,共 41 页
指针自
指向结构体数组第一个元素,其成
是后缀,先取值,所以表达
指向结构体数组第一个元素,其成员n=5,由于
式为5, 之后再自加一为结构体数组第一个元素,其成员n=5, 先取值,表达式为