一、选择题
1. 有以下程序:
程序运行后的输出结果是( )。
A.6
B.21
C.123456
D.654321
【答案】A
【解析】本题首先定义文件指针变量fp
和数组
入数据再打开文件随后先给文件写
rewind 函数将文件指针从当前位置重新指向文件开始位置,所以for 循环依次将数组a 中的数据写入文件开始位置,退出循环后,文件中的数据顺序为:654321,重新使指针指向文件开始位置,将此时fp 指向的数据(即文件中第一个数据6)写入变量k 中,关闭文件,输出k 值,A 项正确。
2. 若程序中有宏定义行:
#defineN100
则以下叙述中正确的是( )。
A. 宏定义行中定义了标识符N 的值为整数100
B. 在编译程序对C 源程序进行预处理时用100替换标识符N
C. 上述宏定义行实现将100赋给标识符N
D. 在运行时用100替换标识符N
【答案】D
【解析】D 项正确,预处理程序对源程序中所有使用宏名的地方进行直接替换。A 项错误,宏定义没有类型限制;B 项错误,预处理程序进行宏替换,而非编译程序;C 项错误,宏定义不是赋值操作,而是进行在预编译时进行替换。
3. 有以下程序
程序的输出结果是( )。
A.
B.
C. D.
【答案】C
【解析】在格式控制中用%%表示,将输出一个%符号。
4. 有以下程序
执行后的输出结果是( )。
A.32
B.24
C.5
D.40
【答案】A
【解析】自增运算符“++”分为前缀和后缀两种形式。两种形式的作用效果是一样的,都是使运算分量的值加1,但是它们的表达式的值不一样,前缀形式表达式的值为运算分量加1之后的值,而后缀形式表达式的值为运算分量加1之前的值。题目中使用了一个for 循环,循环变量i 从1递增到40。在循环体中有两条嵌套的if 语句,首先判断i++%5==0,即判断i++的值(i 加1之前的值)是否能被5整除(判断后i 被加1),然后再判断++i的值(i 加1之后的值)是否能被8整除(判断后i 被加1),若两个条件都满足了,就输出i 的值,只有i=30时,满足i++%5==0,此时i=31,++i%8==0成立,此时i=32。
5. 对于if (表达式)语句,以下叙述正确的是( )。
A. “表达式”的值可以是任意合法的数值
B. 在“表达式”中不能出现变量
C. 在“表达式”中不能出现常量
D. “表达式”的值必须是逻辑值
【答案】A
【解析】单分支选择语句if 语句格式如下:if (表达式)语句体。“表达式”可以是任意合法的C 语言表达式,包括关系表达式和逻辑表达式等,也可以是任意的数值类型(包括整型、实型、字符型等),A 项正确。“表达式”中可以出现变量或者常量,也不一定必须是逻辑值,B 、C 、D 项错误。
6. 设变量已正确定义并赋值,以下正确的表达式是( )。
【答案】C
【解析】赋值运算左边必须是单一变量名。A 项错误
,部分是非法赋值。BD 两项错误,求余运算中的操作对象只能是整型。C 项,为逗号表达式。
7. 若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的switch 语句是( )。
【答案】D
【解析】A 项错误,case 后面的应该为整形或字符型常量;B 项错误,switch 后面的表达式需要在括号内;C 项错误,case 和后面的常量表达式应该由空格隔开。