scanf(“%d”,&a);
}
printf(“%d”,max);
}
A)a==0B)aC)!
a==1D)!
a
17.以下不是死循环的语句是。
A)for(y=9,x=1;x>++y;x=i++)i=x;
B)for(;;x++=i);
C)while
(1){x++;}
D)for(i=10;;i--)sum+=i;
18.下面程序段的运行结果是。
x=y=0;
while(x<15)y++,x+=++y;
printf(“%d,%d”,y,x);
A)20,7B)6,12C)20,8D)8,20
19.以下for循环的执行次数是。
for(x=0,y=0;(y=123)&&(x<4);x++);
A)无限循环B)循环次数不定C)4次D)3次
20.若运行以下程序时,输入2473↙,则程序的运行结果是。
main()
{intc;
while((c=getchar())!
=’\n’)
switch(c-‘2’){
case0:
case1:
putchar(c+4);
case2:
putchar(c+4);break;
case3:
putchar(c+3);
default:
putchar(c+2);break;
}
printf(“\n”);
}
A)668977B)668966C)D)6688766
二.填空题
语言三个循环语句分别是语句,语句和语句。
2.至少执行一次循环体的循环语句是。
3.循环功能最强的循环语句是。
5.程序段
for(a=1,i=-1;-1
{a++;printf(“%2d”,a);};
printf(“%2d”,i);
的运行结果是。
三.判断题
1.在while循环中允许使用嵌套循环,但只能是嵌套while循环。
【】
2.在实际编程中,do-while循环完全可以用for循环替换。
【】
语句只能用于三个循环语句中。
【】
4.在不得已的情况下(例如提高程序运行效率),才使用goto语句。
【】
5.语句标号与C语言标识符的语法规定是完全一样的。
【】
循环的三个表达式可以任意省略,while,do-while也是如此。
【】
允许从外部转到循环体内。
【】
的循环控制条件比do-while的循环控制条件严格。
【】
循环中,根据情况可以省略while。
【】
循环的while后的分号可以省略。
【】
四.程序阅读题
1.写出下面程序运行的结果。
main()
{intx,i;
for(i=1;i<=100;i++){
x=i;
if(++x%2==0)
if(++x%3==0)
if(++x%7==0)
printf(“%d”,x);
}
}
2.写出下面程序运行的结果。
main()
{inti,b,k=0;
for(i=1;i<=5;i++){
b=i%2;
while(b--=0)k++;
}
printf(“%d,%d”,k,b);
}
3.写出下面程序运行的结果。
main()
{inta,b;
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);
}
4.写出下面程序运行的结果。
main()
{intk=1,n=263;
do{k*=n%10;n/=10;}while(n);
printf(“%d\n”,k);
}
5.写出下面程序运行的结果。
main()
{inti=5;
do{
switch(i%2){
case4:
i--;break;
case6:
i--;continue;
}
i--;i--;
printf(“%d”,i);
}while(i>0);
}
6.写出下面程序运行的结果。
main()
{inti,j;
for(i=0;i<3;i++,i++){
for(j=4;j>=0;j--){
if((j+i)%2){
j--;
printf(“%d,”,j);
continue;
}
--i;
j--;
printf(“%d,”,j);
}
}
}
7.写出下面程序运行的结果。
main()
{inta=10,y=0;
do{
a+=2;y+=a;
if(y>50)break;
}while(a=14);
printf(“a=%dy=%d\n”,a,y);
}
8.写出下面程序运行的结果。
main()
{inti,j,k=19;
while(i=k-1){
k-=3;
if(k%5==0){i++;continue;}
elseif(k<5)break;
i++;
}
printf(“i=%d,k=%d\n”,i,k);
}
9.写出下面程序运行的结果。
main()
{inty=2,a=1;
while(y--!
=-1)
do{
a*=y;
a++;
}while(y--);
printf(“%d,%d\n”,a,y);
}
10.写出下面程序运行的结果。
main()
{inti,k=0;
for(i=1;;i++){
k++;
while(k
k++;
if(k%3==0)gotoloop;
}
}
loop:
printf(“%d,%d\n”,i,k);
}
六.程序填空题
1.下述程序用“碾转相除法”计算两个整数m和n的最大公约数。
该方法的基本思想是计算m和n相除的余数,如果余数为0则结束,此时的被除数就是最大公约数。
否则,将除数作为新的被除数,余数作为新的除数,继续计算m和n相除的余数,判断是否为0,等等,请填(3)空使程序完整。
main()
{intm,n,w;
scanf(“%d,%d”,&m,&n);
while(n){
w=【1】;
m=【2】;
n=【3】;
}
printf(“%d”,m);
}
2.下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填(3)空使程序完整。
main()
{intn,k=1,s=0,m;
for(n=1;n<=100;n++){
k=1;s=0;
【1】;
while(【2】){
k*=m%10;
s+=m%10;
【3】;
}
if(k>s)printf(“%dd”,n);
}
}
3.下面程序段的功能是计算1000!
的末尾有多少个零,请填
(1)空使程序完整。
main()
{
inti,k;
for(k=0,i=5;i<=1000;i+=5)
{m=i;
while(【1】){k++;m=m/5;}
}
}
4.下面程序接受键盘上的输入,直到按↙键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格,请填(3)空使程序完整。
main()
{
charcx,front=’\0’;
while(【1】!
=’\n’){
if(cx!
=’’)putchar(cx);
if(cx==’’)
if(【2】)
putchar(【3】)
front=cx;
}
5.下面程序按公式求和并输出结果,请填(3)空使程序完整。
main()
{
【1】;
intk;
for(k=1;k<=100;k++)
s+=k;
for(k=1;k<=50;k++)
s+=k*k;
for(k=1;k<=10;k++)
s+=【2】;
printf(“sum=【3】”,s);
}
七.编程题
1.输入两个正整数m和n,求其最大公约数和最小公倍数。
2.输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。
3.求(即求1!
+2!
+3!
+…+19!
+20!
)。
4.有一个分数数列:
求出这个数列前20项之和。
5.提高题:
打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方之和等于该数本身。