一、选择题
1. 以下关于宏的叙述中正确的是( )。
A. 宏名必须用大写字母表示
B. 宏定义必须位于源程序中所有语句之间 C. 宏替换没有数据类型限制 D. 宏调用比函数调用耗费时间 答:C
【解析】A 项错误,用作宏名的标识符通常习惯用大写字母表示,宏名可以是任何合法的C 语言标识符;B 项错误,在语言中,宏定义可以根据需要写在任何位置:D 项错误,宏调用是在编译前由编译预处理程序完成的,不占运行的时间。
2. 以下关于逻辑运算符两侧运算对象的叙述中正确的是( )。
A. 可以是任意合法的表达式 B. 只能是整数0或非0整数 C. 可以是结构体类型的数据 D. 只能是整数0或1 答:A
【解析】C 语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式。
3 在源程序的开始处加上.
scanf 等函数
B. 将stdio. h中标准输入输出函数链接到编译生成的可执行文件中,以便能正确运行 C. 将stdio. h中标准输入输出函数的源程序插入到引用处,以便进行编译链接 D. 将stdio. h中标准输入输出函数的二进制代码插入到引用处,以便进行编译链接 答:A 【解析】
文件中包含标准输入输出函数的函数说明,预处理指令
是
指程序可以在该文件中找到printf ,scanf 等函数,因此答案为A 选项。
4. 以下关于字符串的叙述中正确的是( )。
A.C 语言中有字符串类型的常量和变量
第 2 页,共 34 页
,以下叙述正确的是 进行文件引用的原因( )。
A.stdio. h文件中包含标准输入输出函数的函数说明,通过引用此文件以便能正确使用prinff 、
B. 两个字符串中的字符个数相同时才能进行字符串大小的比较 C. 可以用关系运算符对字符串的大小进行比较 D. 空串比空格打头的字符串小 答:D
【解析】字符串比较的方法是:依次对si 和S2中对应位置上的字符两两进行比较,当出现第一对不相同的字符时,即由这两个字符决定所在串的大小(比较字符大小的依据是其值)。空格是一种字符,所以空串肯定比空格打头的字符串小。
5. 有以下程序:
程序运行后的输出结果是( )。 A.6 B.10 C.11 D.15 答:C
for 循环计算a 元素中某5个元素的和, 【解析】数组b 用来存储需要求和的a 中元素的下标。
6. 以下叙述中正确的是( )。
A. 语句
B. 对于字符串常量D. 在语句答:B
【解析】B 项正确,C 编译程序将自动在字符串常量最后添加
AC 两项错误,可以直接用
字符串常量给一维字符数组赋初值,习惯上均省略花括号;D 项错误,’\0’会占用一个不属于字符串的存储单元,因此数组str 的长度大于字符串的长度。
7. 若有说明则以下叙述中正确的是( )。
A. 编译后系统为W 分配5个字节 B. 编译后系统为W 分配6个字节 C. 编译后系统为W 分配58个字节 D. 编译后系统不为W 分配存储空间 答:D
第 3 页,共 34 页
码
和
系统已自动在最后加入了
并不等价 字符,表示串结尾
C. 对于一维字符数组,不能使用字符串常量来赋初值
中,数组str 的大小等于字符串的长度
【解析】结构体类型的说明只是列出了该结构的组成情况,标志着这种类型的结构“模式”已存在,编译程序并没有因此而分配任何存储空间。真正占有存储空间的仍应是具有相应结构体类型的变量、数组以及动态开辟的存储单元。
8. 有以下程序:
程序运行时,从键盘输入A. B. C. D. 答:A
输出结果是( )。
【解析】首先定义了一个指针p 指向数组的首地址,在while 语句中,执行功能是如果当前指针指向地址单 元内字符不等于空字符变换的字符常量,A 项正确。
9. 以下选项中叙述正确的是( )。
A. 结构化程序的三种基本结构是循环结构、选择结构、顺序结构 B.C 语言源程序不编译也能直接运行 C. 使用N —S 流程图不能描述复杂算法
D. 计算机能够直接运行C 语言源程序,不必进行任何转换 答:A
【解析】编译就是把高级语言变成计算机可以识别的二进制语言,不经过编译的源程序是不能运行的,B 项错误。算法可以用各种描述方法进行描述,能用
流程图把算法的每一步都用一个
矩形框来表示,把一个个矩形框按执行的次序连接起来就是一个算法描述,无论算法复杂与否都
流程图描述,C 项错误。C 语言源程序需要经过编译和连接生成目标文件和可执行文件
后才能运行,D 项错误
第 4 页,共 34 页
则输出#和指针对应地址元素的值在码加2后