&&x0!=0___) i=1;
else__i=0__;
if(i= =1) printf(\; if(i= =0) printf(\;}
11.现要根据学生的成绩,将学生划分为A,B,C,D,E五个等级,其对应的关系已用if语句写出如下(其中整型变量result存放学生成绩,字符型变量grade存放学生等级):
if(result<60) grade='E'; else if(result<70) grade='D'; else if(result<80) grade='C'; else if(result<90) grade='B';
else if(result<=100) grade='A';
现要将上述关系写成switch语句如下,请在下划线处填入正确内容.
switch( )
{case 6:grade='D’;break; case 7:grade='C';break; case 8:grade='B';break; case 9:
case 10:grade='A';break; ____:grade='E';}
12.假设公民交纳个人所得税的税率如下(a代表个人收入,r代表税率):
r= 0 (a<1000)
r=5% (1000<=a<2000)
r=10% ( 2000<=a<3000)
r=15% (3000<=a<4000) r=20% (a>=4000)
以下程序要求从键盘上输入个人收入,根据以上的税率计算出应付的税金并输出。请 完成该程序。
#include
{float a,b; . int i;
scanf(\%f\,a); if(a>=4000)i=4; else i=____; switch(i)
{case 0:b=a*0.0;break; case 1:b=a*0.05;break; case 2:b=a*0.10;break; case 3:b=a*0.15;break; case 4:b=a*0.20;break;} printf(\%f\,b);}
第六章 循环控制 单项选择题
1.有以下程序片段,请问执行后的输出结果是 int i;
11 / 45
for (i=1;;i++); printf(“%d”,i++);
A)1 B)2 C)3 D)陷入死循环,无输出结果 2.下面有关for语句的说法中,正确的是
A)任何情况下,for语句的三个表达式一个都不能少 B)for语句中的循环体至少会被执行一次
C)for语句只能用于循环次数已经确定的情况下 D)for语句中的循环体可以是复合语句 3.下面程序的输出是 main() {int y=9; for(;y>0;y--) if(y%3= =0)
{printf(“%d”,--y);continue;}}
A)741 B)852 C)963 4.请读程序:
#include
for(a=1,b=1;a<=100;a++) {if(b>=20) break;
if(b%3= =1){b+=3;continue;} b=-5;}
printf(“%d\\n”,a);} 上面程序的输出结果是
A)7 B)8 C)9 5.请读程序
#include
{int num=0;
while(num++<=2)
{printf(“%d\\n”,num);}} 上面程序的输出结果是
A) 1 B) 1 C) 1 2 2 2 3 4
6.执行下面程序片段的结果是 int x=0; do
{printf(“-”,x--);} while(x);
A)打印出321 B)打印出23 7.下面的程序,描述正确的是 main()
{int x=3; do
12 / 45
D)875421 D)10 D)1 3 C)打印不确定结果D)陷入死循环 {printf(“%d\\n”,x-=2);} while(!(--x));}
A)输出的是1 B)输出的是1和-2 C)输出的是3和0 D)是死循环 8.下列循环中哪一个不是无限循环
A) for(i=1;;i++) B) i=1;while(i--)
printf(“%d”,i); {printf(“%d”,i++);} C) i=1 D) for(i=0;i;i++) do printf(“%d”,i);
{printf(“%d”,i); i++;}while(--i);
9.有以下程序段:
int i,j;
for(i=0;i<5;++i) for(j=i;j<5;++j) printf(“*”);
则执行以上的程序片段后,输出‘*’个数是 A)15 B)10 C)25 D)20 10.有以下程序段:
int i,j; i=0;j=0;
while(i++<5) {j=0; do
{printf(“*”);} while(++j<4);}
则执行以上的程序片段后,输出‘*’的个数为
A)15 B)10 C)25 D)20 11.下面的程序段不能实现求阶乘8!(8!=1*2*3*4*5*6*7*8,结果存放在p中)的是 A)p=1; B)p=2;
for(i=1;i<9;i++) for(i=8;i>3;i--) p=p*i; p=p*i; C)p=1;i=1; D)p=1;i=8; while(i<9) do
p=p*i++ ; {p=p*i--;} while(i>1);
12.有下列程序段: char ch; int s=0;
for(ch=’A’;ch<’Z’;++ch) if(ch%2= =0)s++;
printf(“%d”,s);
则执行上述片段后,程序的输出结果是 A)13 B)12 C)26 D)25 13.有下面的程序:
main() {int i,n,k;
13 / 45
n=15496;k=2; for(i=1;i printf(“%d”,n);} 则执行后的输出结果是 A)9 B)6 C)2 D)1 14.有以下程序: main() {int a[10]={4,3,3,4,3,8,4,2,8,3}; int i,j,b[10]; for(i=0;i<10;++i) {b[i]=0; for(j=0;j<10;++j) if(a[j]= =a[i])b[i]=b[i]+1;} j=0; for(i=1;j<10;++i) if(b[i]>b[j])j+I; printf(“%d”,a[j]);} 执行程序后的输出结果是 A)8 B)4 C)3 D)2 15.语句while(!e= =0);是什么时候将会陷入死循环 A) e==0 B) e!=0 C) e!=1 D)e!= -1 16.以下程序的输出结果是 #include {int i; for(i=1;i<=5;++i) {if(i%2) printf(“*”); else continue;printf(“#”);}printf(“$”);} A)*#*#*#$ B)#*#*#*$ C)*#*#$ D)#*#*$ 17.有以下程序片段 int k=5; while(k=1)k--; 执行此程序片段,则描述正确的是 A)while循环执行4次 B)循环体执行一次 C)循环体一次也不执行 D)死循环 18.下面程序的运行结果是 #include do{i--;}while(i++); printf(“%d”,i--);} A) -1 B) 0 C) 1 D)陷入死循环 19.以下说法中正确的是 A)continue语句的作用是结束整个循环的执行 B)break语句应出现在switch语句和循环语句中 14 / 45 C)利用goto语句可以使程序的执行从一个函数跳到另一个函数 D)循环语句中break语句不能单独出现 填空题: 1.执行下属程序片段后的输出结果为____. int a=6; while(a--) printf(“%d”,a--); 2.有以下程序,其功能是将从键盘上输入的小写字母转换成大写字母输出,当输入为‘#’时,结束转换,请在下划线处填上合适的语句。 #include {char c; scanf(“%c”,&c); while(__c!=‘#’____) {if((c>=’a’)&&(c<=’z’)) printf(“%c”,___c-32___); scanf(“%c”,&c);} } 3.为输出入下图形,请在程序中的下划线处填入合适的内容 * ** *** * * * * * * * * * * main() {int i,j; for(i=0;i<4;++i) {for(j=0;j<______;j++) print(“ ”); for(j=0;j<______;j++) printf(“*”); printf(”\\n”);} for(i=0;i<3;++i) {for(j=0;j printf(“ “); for(j=0;j<3-i;j++) printf(“*”); printf(“\\n”);} } 4.现有已知长度为n的整型数组a,其前n-1个元素中已有数据,并且数据按从小到大的顺序排列,函数insert要完成的功能是:把任意整数i填入数组a中,并使插入数据后的数组依然保持从小到大的顺序(函数参数的意义分别是:i为需插入的数据,n为数组a的长度,a为数组名)。 insert(int i,int n,int a[ ]) { int k; k=n-1; while((k>0)&&(______)) 15 / 45