一、选择题
1. 以下叙述中正确的是( )。
A. 简单递归不需要明确的结束递归的条件
B. 任何情况下都不能用函数名作为实参
C. 函数的递归调用不需要额外开销,所以效率很高
D. 函数既可以直接调用自己,也可以间接调用自己
答:D
【解析】D 项正确,C 语言中的函数可以递归调用,S 卩:可以直接或间接地自己调用自己。前者称简单递归, 后者称间接递归。A 项错误,递归必定要有一个明确的结束递归的条件;B 项错误,递归就是把函数名作为实参 的一种特殊情况;C 项错误,函数的递归调用过程中,系统要为每一层调用中的变量开辟存储单元,要记住每一层调用后的返回点,要增加许多额外的开销,通常会降低程序的运行效率。
2. 设a ,b ,C 是整型变量,且已正确赋初值,以下选项中错误的赋值语句是( )。
答:D
【解析】D 项,“( )”具有最高优先级,b 先赋值9,再根据赋值运算符号自右向左进行赋值,再给b 赋值为1,再计算2=b,赋值运算符左边必须是一个变量,但数值2是常量,语法错误。
3. 以下不能对文件进行输出的库函数是( )。
A.fwrite
B.fputs
C.fpout
D.fprintf
答:C
【解析】fwrite 函数的功能是用来向文件写数据块。fputs 函数的功能是用来向指定文件输出一个字符串。fprintf 函数按照格式向文本文件中输出数据。这三者都是库函数,而fpout 不是库函数。
4. 下面关于位运算符的叙述,正确的是( )。
A.&表示“按位与”的运算
B.#表示“按位异或”的运算 C. 表示“按位或”的运算
D. 〜表示“按位异或”的运算
答:A
【解析】C 语言提供的六种位运算符,如下表所示,
5. 有以下程序:
程序的运行结果是( )。
A.you!
B.How are you!
C.are you!
D.are you!
答:A
【解析】复制字符串函数
中原有的内容被覆盖。程序执行过程为:在单元中元素为将str2完整的(包括不等于)复制到strl 中,strl 的情况下,判断当前元素是否为空格,若为空格将下一个元素以及之后的所有字符复制到a 数组中。当i=3时,if 条件成立,a 以及之后 进行下一次循环,之后当i=3时,if 条件成立,a 以及之后单前没有空格出现,输出 元中元素为
之后的元素中在
6. 以下叙述中正确的是( )。
A. 在算法设计时,可以把复杂任务分解成一些简单的子任务
B. 在C 语言程序设计中,所有函数必须保存在一个源文件中
C. 只要包含了三种基本结构的算法就是结构化程序
D. 结构化程序必须包含所有的三种基本结构,缺一不可
答:A
【解析】A 项正确,模块化的程序设计方法;B 项错误,C 语言中,函数可以放在不同的源文件中;CD 两项错误,由三种基本结构所构成的程序称为结构化程序,三种基本结构可以任意组合。
7. 以下选项中叙述正确的是( )。
A. 函数体必须由{开始
B.C 程序必须由main 语句开始
C.C 程序中的注释可以嵌套
D.C 程序中的注释必须在一行完成
答:A
【解析】函数体是函数首部下面的花括号内的部分,所以函数体必须由{开始,A 选项正确。一个源程序文 件可以包括预处理命令、全局声明、函数定义,程序总是从main 函数开始执行的,不是main 语句,B 选项错误。C 程序中允许两种注释,以开头的单行注释;以开始,以结束的块式注释,D 选项错误。函数可以嵌套,注释不能嵌套,C 选项错误。
8. 有以下程序
程序运行后的输出结果是( )。
A.0
B. 随机值
C.15
D.16
答:B
【解析】sum 作为局部变量,没有显式初始化,sum 值代表原来内存中存储的对象,不可预知,程序结果是随机值。
9. 下面是有关C 语言字符数组的描述,其中错误的是( )。
A. 不可以用赋值语句给字符数组名赋字符串
B. 可以用输入语句把字符串整体输入给字符数组
C. 字符数组中的内容不一定是字符串