printf(“v=%d”,v); }
【题13】 以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。如?a?变成?f?,?w?变成?b?。请在[ ]内填入正确的内容。 #include “stdio.h” main() {char c;
c=getchar();
if(c>=?a?&&c<=?u?) c=c+5 ;
else if(c>=?v?&&c<=?z?) c=c-21 putchar(c); }
3 程序题
【题1】编制程序要求输入整数a和b,若a*a+b*b大于100,则输出a*a+b*b百位以上的数字,否则输出两数的和。
[题2]试编程判断输入的正整数是否既是5又是7的正倍数。若是,则输出yes;否则输出no。
【题3】编程实现:输入一个整数,判断它能否被3,5,7整除,并输出以下信息之一: 能同时被3,5,7整除;
能被其中两个数(要指出哪两个)整除; 能被其中一个数(要指出哪一个)整除; 不能被3,5,7任一个整除。
【题4】 编程实现以下功能:读入两个运算数(data1和data2)及一个运算符(op),计算表达式data1 op data2的值,其中op可为+,—,*,/(用switch语句实现)。
第5章循环控制部分习题
1 选择题
【题1】语句while(!e);中的条件!e等价于 ( A )。 A) e==0 B) e!=1 C) e!=0 D) ~e 【题2】以下for循环是 ( C )。
for(x=0,y=0; (y!=123)&&(x<4) ; x++);
A)无限循环 B) 循环次数不定 C) 执行4次 D) 执行3次 【题3】 下面有关for循环的正确描述是 ( D ) A) for循环只能用于循环次数已经确定的情况 B) for循环是先执行循环体语句,后判定表达式 C) 在for循环中,不能用break语句跳出循环体
D) for循环体语句中,可以包含多条语句,但要用花括号括起来
【题4】下面程序段的运行结果是 ( D ) int x=0 , y=0;
while (x<15) y++, x+=++y ; printf(“ %d,%d ” , y , x );
A) 20, 7 B) 6,12 C) 20,8 D) 8,20 【题5 】下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数 n,并输入m,n中的较大数,请选择填空。 #include
{int m=0,n=o; char c;
while( (1) !=?\\n?) 选A {if(c>=?A?&&c<=? Z ?) m++; if(c>=?a?&&c<=?z?) n++; }
printf(“%d\\n”,m (1) A) c=getchar() B)getchar() C)c=getchar D) scanf(“ü”,c) (2) A) n:m B) m:n C) m:m D) n:n 【题6】下面程序的功能是将小写字母变成对应的大写字母后的第二个字母。其中y变成A,z变成B。请选择填空。 #include while((c=getchar())!=?\\n?) {if(c>=?a?&&c<=?z?) { (1) ; 选D fr(c>?Z”&&c<=”Z”+2) (2) ; 选C } printf(“%c”,c); } } (1) A) c+=2 B) c-=32 C) c=c+32+2 D) c-=30 (2) A) c=?B? B) c=?a? C) c-=26 D) c=c+26 【题7】下面程序的功能是将从键盘输入的一批正整数中求出最大者,输入0 结束循环选择填空。 #include {int a,max=0; scanf(“%d”,&a); while( ) 选B { if(max printf(“%d”,max); } A) a==0 B) a C) !a==1 D) !a 【题8】 C语言中while和do-while循环的主要区别是 (A). A) do-while的循环体至少无条件执行一次 B) while的循环控制条件比do-while的循环控制条件严格 C) do-while允许从外部转到循环体内 D) do-while的循环体不能是复合语句 【题9】下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0 时结束循环。请选择填空。 #include {long int num; Scanf(“%ld”,&num); do { if( 【1】 ) printf(“%ld”,num); 选B scanf(“%ld”,&num); }while( 【 2】 );} 选C 【1】A) num0/10==3 B) num/100==3 C) num/10==3 D) num/10==3 【2】A) !num B) num>0 C) !num==0 D) num<=0 【题10】下面程序运行结果是(B). # include { int a=1,b=10; do {b-=a ; a++ ; } while ( b - - < 0) ; printf ( “ a=%d , b=%d\\n”,a,b); } A) a=3 , b=11 B) a=2,b=8 C)a=1,b=-1 D)a=4,b=9 【题11】执行语句for(i=1;i++<4; );后变量i的值是(C). A)3 B)4 C)5 D)不定 【题12】下面程序的功能是计算1至50中是7的倍数的数值之和,请选择填空。 #include {int I,sum=0; for(i=1;i<=50;i++) if ( ) sum+=i; 选D printf(”%d”,sum); } A) (int)(i/7)==i/7 B) (int) i/7==i/7 C) i%7=0 D) i%7==0 【题13】 下面程序的功能是求算式xyz+yzz=532中x, y, z的值(其中xyz和yzz分别表示一个三位数),请选择填空。 #include {int x,y,z,i,result=532; for(x=1;x<10;x++) for(y=1;y<10;y++) for( 【1】 ;z<10;z++) {i=100*x+10*y+z+100*y+10*z+z; if( 【2】 ) printf(“x=%d,y=%d,z=%d\\n”,x,y,z); } } 【1】A)z=x B)z=1 C)z=0 D)z=y 【2】A)i/result= =1 B)i=result C)i!=result D) i= =result 【题14】 以下正确的描述是(B). A) continue语句的作用是结束整个循环的执行 B)只能在循环体内和switch语句体内使用break语句 C) 在循环体内使用break语句或continue语句的作用相同 D) 从多层循环嵌套中退出时,只能使用goto语句 【题15】 与下面程序段等价的是(C). for (n=100;n<=200;n++) { if(n%3==0) continue; printf(“M”,n); } A)for(n=100;(n%3)&&n<=200;n++) printf(“M”,n); B)for(n=100;(n%3)︱︱n<=200;n++) printf(“M”,n); C) for(n=100; n<=200;n++) if(n%3!=0) printf(“M”,n); D) for(n=100; n<=200;n++) { if(n%3) printf(“M”,n); else continue; break; } 【题16】 下面程序的运行结果是(B). #include { int k=0;char c=?A?; do { switch(c++) { case ?A?:k++;break; case ?B?:k--; case ?C?:k+=2;break; case ?D?:k=k%2;continue; case ?E?:k=k*10;beak; default:k=k/3; } k++; } while(c pfintf(“k=%d\\n”,k); } A) k=3 B) k=4 C) k=2 D) k=0 【题5. 53】 下面程序的运行结果是(B). #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 D) 10 2 填空题 【题1】下列程序运行后的输出结果是 #include int i,j,k; for(i=1;i<=4;i++) { for(j=1;j<=20-3*i;j++) printf(\ for(k=1;k<=2*i-1;k++) printf(\printf(\