一、选择题
1. 以下叙述正确的是( )。
A.C 程序总是以main ( )作为程序执行的起始行
B.main ( )函数若不带参数,其后面的一对圆括号可省略
C. 函数体内的定义语句和可执行语句允许任意穿插出现
D.C 语言中的语句之间必须用分号作为分隔符
答:A
【解析】main ( )函数后面的括号告诉编译器这是一个函数,不可以省略,排除B 选项;在复合语句中,不仅可以有执行语句,还可以有定义语句,定义语句应该出现在执行语句的前面,故排除C 选项;C 语言中的某些语句可以不用分号,例如if 语句,宏定义,故D 选项错误;答案为A 选项。
2. 已定义以下函数
fun 函数返回值是( )。
A. —个整数
B. 不确定的值
C. 形参p 中存放的值
D. 形参p 的地址值
答:A
【解析】题目中fun ( )函数的返回表达式是
型指针,所以该值是一个整数。
3. 有以下程序:
程序运行后的输出结果是( )。
A.6
B.7
第 2 页,共 33 页 是形参p 所指内容的值,因为p 为int
C.11
D.12
答:A
【解析
】是字符数组,初始化时未赋初始值的自动赋
值
即
函数求字符串长度,统计长度时以结束,即统计到长度为6时结束,strlen 函数返回值为6。
4. 若有定义inta ,b ,c ; 以下选项中的赋值语句正确的是( )。
A.a= (b=c) +1;
B. (a=b) =c=l:
C.a= (b==c) =1;
D.a+b=c:
答:A
【解析】赋值运算结合性为由右向左结合,赋值运算符左值为变量,右值为变量或常量,且左右两边数据类 型相同才能实现赋值。A 项中,将c 赋值给b ,然后将b 加1赋值给a ,是正确的赋值语句,正确。B 项中,将1 赋值给c , 赋值运算
赋值,错误。C 项中赋值运算
值为表达式,不是变量不能被赋值,D 项错误。 中左值为表达式,不是变量不能被左值为逻辑表达式,不是变量不能被赋值,错误。D 项左
5. 以下函数按每行8个输出数组中的数据:
下画线处应填入的语句是( )。
A.
B.
C.
D.
答:C
【解析】每行输出8个数组数据的实现,即输出8个后就输出一个换行,所以,应该对8取余,当结果为0时输出换行符,即用语句
6. 以下叙述中错误的是( )。
A.C 语言编写的函数源程序,其文件名后缀可以是.C
B.C 语言编写的函数都可以作为一个独立的源程序文件
C.C 语言编写的每个函数都可以进行独立的编译并执行
第 3 页,共 33 页 可表达。
D. —个C 语言程序只能有一个主函数
答:C
【解析】C 源程序经过C 编译程序编译之后生成一个后缀为.OBJ 的二进制文件(称为目标文,然后由称为“连接程序”(Link )的软件,把此.OBJ 文件与C 语言提供的各种库函数连接件)
起来生成一个后缀为.EXE 的可执行文件。只有含有main 函数的经过编译链接才能执行。
7. 以下不能将键盘输入的字符串:This is a string〈回车〉读入到str 中的程序段是( )。
A. B. C. D.
答:A
【解析】在使用scanf 函数时,在输入数据时,遇到空格,或按“回车”键或按“跳格”(Tab )键时该数据 认为结束。A 项中输入This 后有一个空格,认为数据输入结束,以后的数据不能再读入到str 中,故选择A 项。 B 项用getchar 读人字符,键盘输入的所有字符均被认为是有效字符读入,用while 循环控制读入,当读入字符为 回车时结束读入,字符串被正确的读入到str 中。C 项用gets 函数读入字符串,它读入键盘输入的所有字符,遇到回车自动结束读入,所以也能正确读入字符串到str 中。D 项用do...while 和指针循环控制字符输入,依次判断输入字符是否为回车符,若不是回车符则放人字符数组中,直到读入回车符,结束循环,数组str 中正确存放人指定的字符串。
8. 有以下程序:
程序运行后的输出结果是( )。
A.8,16
B.16,32
C.8,32
D.16,16
答:C
【解析】带参数的宏定义不是进行简单的字符串替换,而是要进行参数替换不计算,只是进行简单的替换。替换过程是:用宏调用提供的实参字符串,直接置换宏定义命令行中相应形参字符串,非形参字符保持不变。FNA (FNB (a ))的替换过程为:FNA (2+2)替换为2+2X2+2,计算结果为8。FNB (FNA (b ))的替换过程为:FNB (4*4)替换为4X4+4X4=32。程序运行后的输出结果是8,32,故C 项正确。
第 4 页,共 33 页