c语言第四版谭浩强著期末复习答案 下载本文

54.判断char型变量ch是否为大写字母的正确表达式是 c 。 A) ' A' <=ch<='z' B) (ch> = 'A')&(ch<=' Z' ) C) (ch>=' A' )&&(ch<='Z') D) (' A' < = ch)AND('Z'> = ch)

55.设x,y 和z是int型变量,且x = 3,y= 4,z= 5,则下面表达式中值为0的是 d 。 A) 'y'&&'y' B) x < =y C) x||y+z&&y-z D) !(x=y && ch<'B'&&!Y) 的值是 c 。 A) 0 B) 语法错 C) 1 D) \假\

57.若希望当A的值为奇数时,表达式的值为\真\的值为偶数 表达式的值 为\假\。则以下不能满足要求的表达式是 a 。 A) A%2==1 B) !(A%2 = =0) C) !(A%2) D) A%2 58. 若有程序段如下: a=b=c=0;x=35; if(!a)x--;

else if(b);if(c)x=3; else x=4;

执行后,变量x的值是 b 。 A)34 B)4 C)35 D)3

59. 定义:int x=7,y=8,z=9;后,则下面表达式为0的是 d 。 A)' x ' && ' y ' B)x<=y

C)x||y+z&&y-z D)!((x

int x=-1; do {

x=x*x;

}while (!x);

printf(\

return 0; }

A)是死循环 B)循环执行2次 C)循环执行1次 D)有语法错误

61. 对switch后括号内的表达式,叙述正确的是 c 。 A)只能是数字 B)可以是浮点数

6

C)只能是整型数据或字符型数据 D)以上叙述都不对 62.下列关于switch和break语句的说法中正确的是 b 。 A)break语句只能用在switch语句中

B)在switch语句中,可以根据需要决定是否使用break语句 C)在switch语句中必须使用break语句 D)以上选项都不正确 63. 以下正确的描述是 b 。

A)continue语句的作用是结束整个循环的执行 B)只能在循环体内和switch语句体内使用break语句 C)在循环体内使用break语句或continue语句的作用相同 D)从多层循环嵌套中退出时, 只能使用goto语句 64.以下说法中错误的是 d 。

A)C语言总是从main函数开始执行 B)函数在程序中出现的先后位置与其被调用的顺序无关 C)一个完整的C程序可由若干个C源程序文件组成

D)main函数的定义必须出现在所有其他函数之前,否则将产生运行错误 65.C语言规定,函数返回值的类型是 c 。

A)由return语句中表达式的类型所决定 B)由调用该函数的主调函数所具有的类型决定 C)由定义该函数时所指定的函数类型决定 D)由系统随机决定

66.以下说法中正确的是 b 。

A)main函数和其他函数间可相互调用 B)main函数可以调用其他函数,但其他函数不能调用main函数 C)因为main函数可不带参数,所以其后的参数小括号能省略 D)根据情况可以不写main函数 67.以下函数定义中正确的是 b 。

A)fun(float x,y) B)fun(int x, int y) C)fun(int x, int y); D)void fun(int x, int y) { return x+y; } { return x+y; } { return x+y; } { return x+y; } 68.以下说法中正确的是 b 。

A)在一个函数的执行过程中又出现对其他函数的调用,则称此函数为递归函数。 B)递归函数中必须存在递归结束的条件

C)函数的递归调用可以提高程序的执行效率 D)递归函数中必须出现return语句

69.以下有关“递归函数”说法中正确的是 a 。

A)既允许直接递归调用,也允许间接递归调用 B)只允许直接递归调用

7

C)既不允许直接递归调用,也不允许间接递归调用 D)只允许间接递归调用 70. C语言中,函数调用时若实参是数组名,则传递给被调函数对应形参的是 d 。 A) 整个数组 B) 数组元素的个数

C) 数组占用的内存单元个数 D) 数组在内存中存放的首地址 71.C语言中,函数调用时若实参是数组名,则被调函数对应形参 c 。 A) 可以是相应类型简单变量 B) 必须是相应类型数组名 C) 可以是相应类型数组名 D) 必须是相应类型的指针变量 72.以下说法中错误的是 d 。

A)数组元素可以作为函数实参 B)指针可以作为函数的形参 C)结构变量可以作为函数参数 D)结构指针变量不能作为函数参数 73.C语言中,以下叙述中错误的是 a 。 A) 主函数中定义的变量是全局变量

B) 同一程序中,全局变量和局部变量可以同名 C) 全局变量的作用域从定义处开始到本源程序文件结束 D) 局部变量的作用域被限定在其所定义的局部范围中 74.在一个源程序文件中定义的全局变量,其作用域为 b 。

A) 整个源程序文件 B) 从定义处开始到本源程序文件结束 C) 整个主函数 D) 所处C程序的所有源程序文件中 75.在C函数中,局部变量的隐含存储类型是 a 。

A) auto B) static C) register D) extern

76.在C程序中,如果限定一个局部变量只能在所定义的范围中起作用,那么这个变量的存储类型 a 。

A) 只能是auto B) 只能是extern

C) 可以是auto或static D) 可以是extern或static

填空题

1.在C语言中所提供的数据结构是以数据类型形式出现的,其中的基本类型包括int 型 即 整形 、float型即_ 单精度浮点型 、double型即 双精度浮点型 、char型即 字符型 等。

2. C语言中的标识符只能由三种字符组成,它们是 字母 、 数字 和 下划线 。

3. C程序中的字符常量是用单引号括起来的一个字符;除此之外,还允许用一种特殊形式的字符常量,是以 反斜杠\\ 开头,被称为转义字符。

4.字符串常量是一对双引号括起来的字符序列,且以 ‘\\0’ 结束。

8

5.常量是指在程序执行过程中其值 不能 _改变的量。 6.变量是指在程序执行过程中其值 可以改变 的量。 7.C实型变量分为 单精度 _和 双精度 _两类。 8.转义字符'\\n'表示 换行 ,使光标移到屏幕上下一行开头。 9.一个字符变量在内存中占 1 字节。

10.一个字符数据既可以以字符形式输出,也可以以 整数 形式输出。 11.字符串常量是用_ “” _括起来的字符序列。

12.在进行运算时,不同类型的数据必须_ 先强制类型转换 _,然后进行运算。 13.可以利用_ 强制类型转换 _运算符将一个表达式的值转换成指定的类型。

14.有两种类型转换,一种是在运算时不必用户指定,系统自动进行类型转换;另一种是 用户自己定义的转换 (强制类型转换) 。 15.两个整数相除的结果是_ 整数 。

16.求模运算符(%)只能用于 整数 _操作数。 17.一个表达式的最后加上一个 ; 就成了一个语句。

18.若int x = 3,则执行表达式x*= x+= x - 1后x的值为 25 。 19.若a是int型变量,则表达式((a=4*5,a*2),a+6)的值为 20 。

20.若a是int型变量,且a的初值为6,则执行表达式a+=a-=a*a后a的值为 -60 。 21.若a是int型变量,则执行表达式a=25/3%3后a的值为 2 。 22.若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n++ x的值为 10 ,n的值为 6 。

23.计算机程序设计语言的发展经历了从 非结构化语言 、 结构化语言 到 面向对象的语言 的历程。

24.计算机唯一能识别的语言是 机器语言 。 25.C源程序的基本单位是 函数 。

26.一个C源程序至少应包括一个 主函数 。

27.在一个C源程序中,注释部分两侧的分界符分别为 /*??*/ 和 //?? 。 28.C语言源程序文件的后缀是 cpp , 经过编译后, 生成文件的后缀是 exe ,经过链接后, 生成文件的后缀是 obj _。

29. 用高级语言编写的程序称为 源程序 ,必须将其翻译成二进制程序后才能执行。翻译有两种方式,一种是通过 解释 翻译一句执行一句的方式执行,另一种通 过 编译 一次翻译产生目标程序,然后执行。 30.程序设计的核心是 算法 。

31.算法描述的方法包括 自然语言 、 流程图 和 伪代码 。

32.程序设计的三种基本结构包括 顺序 、 循环 和 选择 。

9

程序阅读题

1.写出以下程序运行的结果 。 #include int main ( ) {

int i,j,m,n; i=8; j=10; m=++i; n=j++;

printf(“%d,%d,%d,%d”,i,j,m,n); return 0; } 9,11,10

2. 写出以下程序运行的结果 。 #include int main() {

int a = 7, b = 9; a = a + b; //(a=16) b = a - b; //(b=7) a = a - b;//(a=9)

printf (\

c);

return 0; }

A=75,b=15,c=3

6. 执行程序之后,输入2↙6↙3↙ ,以下程序运行后的输出结果是 。(↙表示回车) #include int main() { } D=6

7. 以下程序运行后的输出结果是 。 #include int main( ) {

int n,s; s=n=0; while(s<=10) {

n++; s+=n; int a,b,c,d;

printf(\请输入三个整数:\\n\scanf(\if(a>b) d=a; //d=2 else d=b;

if(c>d) d=c; printf(\int a, b, c;

a = (b = (c = 3) * 5)*5;

printf (\b=%d, c=%d \\n\a, b,

return 0;

return 0; } A=9;b=7

3. 写出以下程序运行的结果 , c = 3 。

#include int main() {

10