二级c语言程序设计习题及解答ch4程序结构 下载本文

Ch4 C语言的程序结构

输入一个学生的成绩,评定他的等级。每十分一个等级 #include main() { int score; printf(\请输入学生分数:\\n\ scanf(\ while(score>100||score<0) { printf(\请重新输入学生成绩:\\n\ scanf(\ } if(score>=90) printf(\优秀\\n\ else if(score>=80) printf(\良好\\n\ else if(score>=70) printf(\中等\\n\ else if(score>=60) printf(\合格\\n\ else printf(\不合格\\n\ }

#include main() { int score; printf(\请输入学生分数:\\n\ scanf(\ while(score>100||score<0) { printf(\请重新输入学生成绩:\\n\ scanf(\ } switch(score/10) { case 10: case 9: printf(\优秀\\n\ case 8: printf(\良好\\n\ case 7: printf(\中等\\n\ case 6: printf(\合格\\n\ default: printf(\不合格\\n\

}

}

7)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是 ( C ) A)if(a>b) c=a,a=b,b=c; B)if(a>b) {c=a,a=b,b=c;} C)if(a>b) c=a;a=b;b=c; D)if(a>b) {c=a;a=b;b=c;} ABD的结果

C的结果

测试程序如下: #include main() { int a=1,b=2,c=3;

if(a>b) {c=a;a=b;b=c;} //可换成以上语句 printf(\}

【解析】因为a永远小于b,所以条件为假,不执行if后面的第一个语句,然而,C选项中if后面有3条语句,但只有第一句是在if的范围中的,剩下两句即使if不成立也会执行;而A中c=a,a=b,b=c;只是一个语句,在if的范围之内

(18)有以下程序应该选( B ) #include main() {int x;

scanf(“%d”,&x); if(x<=3) ; elseif(x!=10)

printf(“%d\\n”,x); }

程序运行时,输入的值在哪个范围才会有输出结果 A)不等于10的整数

B)大于3且不等于10的整数

C)大于3或等于10的整数 D)小于3的整数

【解析】若满足x<=3则执行if后的空语句——无输出结果;当x>3时,才判断x!=10,若成立则输出x,所以必须满足大于3且不等于10的整数

(19)有以下程序 ( C) #include main() { int a=1,b=2,c=3,d=0; if(a==1 &&b++==2) if(b!=2 || c--!=3) printf(\ elseprintf(\ elseprintf(\}

程序运行后的输出结果是 A)1,2,3 B)1,3,2 C)1,3,3 D)3,2,1

【解析】if(a==1 &&b++==2)此时a=1,b=2,b++是先取值后++所以b确实是2,该条件满足,继续执行,此时b++变成了3;再判断if(b!=2 || c--!=3),此时b=3而不是2,所以满足条件,而(或)||运算有一真即真,不会再判断和执行c--!=3语句,直接执行printf(\所以c并没有改变还是3

4-9节-------4-15节、选择题

[4.1] 下列运算符中优先级最高的运算符是( A ) A)! B)% C)-= D)&& 【解析】查看优先级表

[4.2] 下列运算符中优先级最低的运算符是 ( A ) A)|| B)!= C) <= D)+

[4.3] 为表示关系x>=y>=z, 应使用的C语言表达式是 ( A ) A) (x>=y)&&(y>=z) B) (x>=y)AND (y>=z) C) (x>=y>=z) D) (x>=y)&(y>=z) 【解析】必须满足两者

[4.4] 设 a、b 和c 都是int 型变量,且a =3,b=4, c=5;则以下的表达式中,值为0的表达式是 ( D )

A) a&&b B)a<=b C)a||b+c&&b-c D)!((a

【解析】A: a&&b a和b都不等于0,只要&&两边都不为零,结果就为1;

C:a||b+c&&b-c先算b+c和b-c两者结果不为零,再进行&&运算,结果为1,最后进行||运算得到1(简便方法:因为最后才算||,而a不为零,则此表达式结果必为1)

D:先算(a

[4.5] 以下程序的输出结果是:( C ) A) 0 B)1 C)2 D)3

main()

{ int a=2,b=-1,c=2; if (a

c=0;

else c+=1;

printf(“%d\\n”,c); }

【解析】千万别被缩进格式所迷惑!!!其实以上程序相当于 #include main()

{ int a=2,b=-1,c=2; if (a

printf(\}

在没有括号时,else永远是就近原则,因为a

[4.6] 以下程序的输出结果是:( A ) A) 1 B) 2 C) 3 D) 4 main()

{ int w=4,x=3,y=2,z=1;

printf(“%d\\n”,(w

【解析】(w

[4.7] 若执行以下程序时从键盘上输入3和4,则输出结果是( B ) A)14 B)16 C)18 D)20