C语言程序复习题及参考答案 下载本文

第四章 顺序程序设计

一、主要内容

输入输出函数

1. printf函数的格式考查:

a)格式:printf(“格式控制串”,输出表)

b)输出表:要输出的数据(可以没有,多个时以“,”分隔)

格式控制串:包含两种信息

? 格式说明: %[修饰符]格式字符 ,用于指定输出格式 ? 普通字符或转义序列:原样输出 c)修饰符m、n、l的功能: 修饰符 功能 m 输出数据域宽,数据长度

a)格式:scanf(“格式控制串”,地址表)

b)格式控制字符串中包含的非格式控制字符要原样输入;如:

scanf(“sum=%d”,&a); 输入时”sum=”也要输入。

scanf函数中没有精度控制,如:scanf(“%5.2f”,&a) ;是非法的。 3.getchar( )获取一个字符。 a)格式:char c; c=getchar();

4. putchar()输出一个字符,括号中的参数是一个字符变量或常量 a)格式:putchar(‘a’);

二、练习题

一、选择题: 1.设有语句scanf(“%d,%d”,&m,&n);要使m、n的值依次为2,3,正确的输入是 ( ) A. 2?3↙ B. 2,3↙ C. 2;3 D. 2↙3↙

2.______是C语言的标准函数名。 ( )

A. scanf B. case C. while D. int

3、若有int i=-19,j=i%4;printf(“%d”,j);结果为。 ( ) A、-3 B、1 C、3 D、-1

4、int x,y;

第 15 页

共 88 页

scanf(“%d,%d”,&x,&y) ;若要使x得11,y得12,则以下输入形式中错误的是。 ( ) A、11,12↙ B、 11空格12↙ C、11,空格↙12↙ D、11,↙12↙ 二、填空题:

1、在TC中,printf()函数输出表列的求值顺序是 。 2、在scanf函数中, 表示变量的地址。

3、以下程序的运行结果是 。 main()

{ printf(\

4、若想通过以下输入语句使 a=5.0,b=4,c=3,则输入数据的形式应该是 。 int b,c; float a;

scanf(\,%d,c=%d\,&a,&b,&c);

5、若变量x、y已定义为int类型且X的值为99,y的值为9,

请将输出语句printf(_____,x/y);补充完整,使其输出的计算结果形式为:x/y=11。

6、表达式pow(2.8,sqrt(double(x)))值的数据类型为 。

7、 输入一个华氏温度,要求输出摄氏温度: void main( ) {

float c,f;

printf(\请输入一个华氏温度:\ ;

; /* 摄氏温度c= (f - 32) */

printf(\摄氏温度为%5.2f\\n\}

8、int x=102,y=012;printf(“-,-\\n”,x,y); 则执行结果是 。

三、参考答案

一、选择题:

1、B 2、A 3、A 4、B 二、填空题:

1、由右向左 2、& 3、computer,□□com 4、5,4,c=3 5、“x/y=%d” 6、double 7、scanf(“%f”,&f); c=5.0/9*(f-32); 8、102,10

第 16 页 共 88 页

第五章 选择结构程序设计

一、主要内容

三种程序结构:顺序结构、选择结构、循环结构 if语句(条件选择语句) a)if语句的三种形式:

b)if后面的表达式类型任意的;若执行语句是多条,必须为复合语句,即 写在一对花括号内。

c)if结构可以嵌套,注意缺省{ }时,else总是和它上面离它最近的未配对

的if配对 switch语句

a)格式中,E1,E2,…En是常量表达式,且值必须互不相同

b)注意执行时语句中有break和无break时,执行流程的区别。(本处常考) c)default可以不写。

二、练习题

一、选择题:

1、经过以下语句定义后, 表达式z+=x>y?++x:++y 的值为:( )

int x=1,y=2,z=3;

A. 2 B. 3 C. 6 D. 5

2、能正确表示逻辑关系:\或a≤ 0\C 语言表达式是 : ( )

A. a>=10 or a<=0 B.a>=0|a<=10 C. a>=10&&a<=0 D. a>=10||a<=0 3.已知int a=5,b=7,c=3;则逻辑表达式a

A. 1 B. 0 C. 3 D. 4 4、下列程序的输出结果是 :( )

main()

{ int x, y, z ; x=y=z=1 ;

++x&&++y||++z ;

printf(\ }

A.1 1 1 B. 2 2 2 C. 2 2 1 D. 2 1 1 5、在C语言中逻辑值“真”是用 表示的。 ( ) A. 预定义为真值的宏 B. 非零值 C. 正数 D. 非零整数

6、 设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句:( )

if (x=y) printf(\A. 语法错 B. 不能判断x和y是否相等

C. 编译出错 D. 能判断x和y是否相等 7、以下程序的输出结果是:( )。 main()

{ int a=5,b=4,c=6,d;

printf(\

第 17 页 共 88 页

}

A. 5 B. 4 C. 6 D. 不确定

8、若希望当A 的值为奇数时, 表达式的值为\真\的值为偶数时, 表达式的值为\假\则以下不能满足要求的表达式是 :( )

A. A%2==1 B. !(A%2==0) C. !(A%2) D. A%2

9、若希望当A 的值为奇数时, 表达式的值为\真\的值为偶数时, 表达式的值为\假\则以下不能满足要求的表达式是 :( )

A. A%2==1 B. !(A%2==0) C. !(A%2) D. A%2 10、执行以下语句后,a,b的值分别为:( )。 int a ,b ,c ; a=b=c=1 ; ++a||++b&&++c;

(A)2 ,2 (B)1 ,1 (C)2 ,1 (D)1 ,2 11、 判断char型变量c l是否为小写字母的正确表达式为: ( )

A. ’a’<=c1<=’z’ B. (c1>=a)&&(c1<=z)

C. (‘a’>=c1) (‘z’<=c1) D. (c1>=’a’)&&(c1<=’z’) 12、已知int x=10,y=20,z=30;以下语句执行后x,y,z的值分别是:( )。

if(x>y) z=x ; x=y ; y=z ;

(A)x=10,y=20,z=30 (B)x=20,y=30,z=10

(C)x=20,y=30,z=30 (D)x=20,y=30,z=20 13、以下选项中非法的表达式是: ( )

(A) 0<=x<100 (B) i=j==0 (C) (char)(65+3) (D) x+1=x+1 14、阅读以下程序:

main() { int x;

scanf(\

if(x--<5) printf(\else printf(\}

程序运行后,如果从键盘上输人5,则输出结果是:( ) (A)3 (B) 4 (C) 5 (D) 6 15. C语言对于嵌套if语句规定else总是与( )匹配。 A)与最外层的if B.)与之前最近的if

C)与之前最近的不带else的if D)与最近的{ }之前的if

16.以下有关switch语句的正确说法是________。 ( A)break语句是语句中必须的一部分

B)在switch 语句中可以根据需要使用或不使用break语句 C)break语句在switch 语句中不可以使用

D)在switch 语句中的每一个case都要用break语句

17.设有: int a=2,b=3,c=7,d=8,m=3,n=3; 执行 (m=a>b)&&(n=c>d) 后的_________。

A) 0 B) 1 C ) 2 D) 3 )

第 18 页

共 88 页

) n 值为(