一、选择题
1. 以下叙述中正确的是( )。
A. 在C 语言中,预处理命令行都以“#”开头
B. 预处理命令行必须位于C 源程序的起始位置
C.#include必须放在C 程序的开头
D.C 语言的预处理不能实现宏定义和条件编译的功能
答:A
【解析】编译预处理”就是在C 编译程序对C 源程序进行编译前,由编译预处理程序对这些编译预处理命令行进行处理的过程。A 项正确,在C 语言中,凡是以“#”号开头的行,都称为“编译预处理”命令行。B 项错误,预处理命令行可以出现在程序的任何一行的开始部位,其作
C 项错误,#inClUde可以出现在程序的任意一行的开始部位;用一直持续到源文件的末尾;
D 项错误,预处理可以实现宏定义、条件编译和文件包含。
2. 以下程序的主函数中调用了在其前面定义的函数fun :
则以下选项中错误的fun 函数首部是( )。
A. B. C. D.
答:D
【解析】由题目可知,fun 函数中定义的应该是一个double 型的指针变量。
3. 有以下程序:
程序的运行结果是( )。
A.nice
B.verynice
C.nicegood
D.verygood
答:D
【解析】通过赋值运算使一个字符指针指向一个字符串常量:这种形式只是将字符串“nice”首地址赋给指针,而不是将指针原本指向的单元元素改变成“nice”。程序执行过程为:定义字符数 组并且初始化为“verygood”常量,定义指针ps 使其指向数组,使ps 指向数组第5个元素,使指针指向字符串 “nice”,这并不影响s 数组任何元素值,故输出字符串8为“verygood”。
4. 有如下程序:
程序运行后的输出结果是( )。
答:C
【解析】题目中判断if 条件是否成立,
后a 自增 得if 条件不成立执行else 函数体,输出F 。最后执行语句按照格式输出故C 选项正确。
5. 下列函数的功能是( )。
先取值为0, 则为0, 且不计算,而
A. 将a 所指字符串赋给b 所指空间
B. 使指针b 指向a 所指字符串
C. 将a 所指字符串和b 所指字符串进行比较
D. 检查a 和b 所指字符串中是否有
答:A
【解析】题中a 和b 是两个字符型指针,在while 语句的表达式中将指针a 所指向的字符赋给指针b 所指向的内存单元,再判断指针b 所指向的字符是不是字符串中的结尾符,若不是,则字符指针a 和b 的值分别自增,再执行循环语句,直至b 所指向的字符为字符串中的空字符。
6. 以下关于C 语言函数参数传递方式的叙述正确的是( )。
A. 数据只能从实参单向传递给形参
B. 数据可以在实参和形参之间双向传递
C. 数据只能从形参单向传递给实参
D.C 语言的函数,参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用
答:A
【解析】数据只能由实参单向传递给形参称为“值传递”,而不能由形参传给实参,A 项正确;数组名、指针等作参数,实参传递给形参的是地址值,这样形参和实参就指向同一段内存单元,在函数体内对形参数据的改 变也将影响到实
7. 有以下程序段
当执行上述程序段,从键盘上输入555667777123后,y 的值为( )。
A.566.0
B.55566.0
C.7777.0
D.566777.0
答:A
【解析】本题考查的是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其中的格式命令可以说明最大域宽。在百分号(%)与格式码之间的整数用于限制从对应域读入的最大字符数。因此j 的值为55,y 的值为566.0,字符数组name 的值为7777123。
8. 以下选项中不合法的标识符是( )。
答:C