1、5.1 选择题【题 5.1】设有程序段int k=10;while(k=0) k=k-1;则下面描述中正确的是 。A)while 循环执行 10 次 B)循环是无限循环C)循环体语句一次也不执行 D)循环体语句执行一次【题 5.2】设有以下程序段int x=0,s=0;while(!x!=0) s+=+x;printf(“%d“,s);则 。A)运行程序段后输出 0 B)运行程序段后输出 1C)循环的控制表达式不正确 D)程序段执行无限次【题 5.3】语句 while(!E);中的!E 等价于 。A)E= =0 B)E!=1 C)E!=0 D)E= =1【题 5.4】下面程序段的运行结果是 。
2、a=1;b=2;c=2;while(amain()int a,b,t;scanf(“%d%d“,while( )if (ab)t=a;a=b;b=t;printf(“%d,%dn“,a,b);scanf(“%d%d“,A)!a=b B)a!=b C)a=b D)a=b【题 5.9】下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m 和小写字母的个数 n,并输出 m,n 中的较大者#include main() int m=0,n=0;char c;while ((【1】 )!=n) if(c=Aprintf(“%c“,c);【1】A)c+=2 B)c-=32 C)c=c+32+2 D
3、)c-=30【2】A)c=B B)c=A C)c-=26 D)c=c+26【题 5.11】下面程序的功能是在输入一批正整数中求出最大者,输入 0 结束循环,请选择填空 。#include “stdio.h“main()int a,max=0;scanf(“%d“,while ( )if (maxmain()int num=0;while(num(表示回车),则下面程序的运行结果是 。#include “stdio.h“int c;while (c=getchar()!=n)switch (c-2)case 0:case 1: putchar(c+4);case 2:putchar(c+4);b
4、reak;case 3:putchar(c+3);default:putchar(c+2);break;printf(“n“);A)668977 B)668966 C)66778777 D)6688766【题 5.14】以下程序的功能是计算一个整数的各位数字之和,请选择填空。int n,m=1;scanf(“%d”,for( ;n!=0;) m【】 ;n/=10;printf(“%d”,m);A) +=n%10 B) =n%10C) +=n D) =n/10【题 5.15】以下能正确计算 10!的程序段是 。A)do i=1;s=1; B)doi=1;s=0;s=s*i; s=s*i;i+;
5、i+;while(imain()long int num;scanf(“%ld“,doif(【1】) printf(“%ld“,num);scanf(“%ld“,while(【2】);【1】A)num%100/10=3 B)num/100%10=3C)num%10/10=3 D)num/10%10=3【2】A)!num B)num0=0 C)!num=0 D)!num!=0【题 5.21】等比数列的第一项 a=1,公比 q=2,下面程序的功能是求满足前 n 项和小于 100 的最大 n,请选择填空。#include main()int a,q,n,sum;a=1;q=2;n=sum=0;do【
6、1】;+n;a*=q;while(summain() int i=0,j,k;doi+;k=316-13*i;while( );j=k/11;printf(“316=13*%d+11*%d“,i,j);A)k/11 B)k%11 C)k/11=0 D)k/11=0【题 5.23】下面程序的运行结果是 。#include main() int y=10;do y-;while(-y);printf(“%dn“,y-);A)-1 B)1 C)8 D)0【题 5.24】若运行以下程序时,从键盘输入,则下面程序的运行结果是 。#include main() char c;int v1=0,v2=0;d
7、o switch(c=getchar()case a: v1+=1;case t:case T:v2+=1;default: v1+=1;v2+=1; while(c!=n);printf(“v1=%d,v2=%dn“,v1,v2);A) v1=3,v2=4 B) v1=4,v2=4C) v1=6,v2=8 D) v1=7,v2=9【题 5.25】下面程序的运行结果是 。#include main()int a=1,b=10;dob-=a;a+;while(b-+y;x=i+) i=x;B)for(;x+=i);C)while(1)x+;D)for(i=10;i-) sum+=i;【题 5.3
8、1】下面程序段的运行结果是 。for(y=1;y100)break; B) for(;);C) int k=0;do+k;while(k=0);D) int s=36;while(s);-s;【题 5.34】执行语句 for(i=1;i+main() int i;for(i=100;imain()int i,sum=0;for(i=1;imain() int a,b,c,i;a=c=0;for(i=0;imain() int i;for(i=1;imain() int x,i;for(i=1;imain() int x,y,z,i,result=532;for(x=1;xmain() int
9、a,d,i,s,f,x;for (a=1;amain() int i,b,k=0;for(i=1;i=0) k+;printf(“%d,%d“,k,b);A)3,-1 B)8,-1 C)3,0 D)8,-2【题 5.44】以下正确的描述是 。A)continue 语句的作用是结束整个循环的执行。B)只能在循环体内和 switch 语句体内使用 break 语句。C)在循环体内使用 break 语句或 continue 语句的作用相同。D)从多层循环嵌套中退出时,只能使用 goto 语句。【题 5.45】下面程序段 。for(t=1;t=0 时什么也不输出C)printf 函数永远也不执行 D)
10、最多允许输出 100 个非负整数【题 5.46】下面程序段【 】x=3;do y=x-;if(!y) printf(“x”); continue;printf (“#”); while (1#includemain() int a,b,c,d;scanf (“%4d”,for (b=3;bsqrt(b) d=【】 ; else break;for(c=2;csqrt(d) printf (“%d=%d+%dn”,a,b,d);A) a+bB) a-bC) a*bD) a/b【题 5.51】下面程序的运行结果是【 】includemain() int k=0;char c=A;do switch
11、(c+) case A: k+;break;caseB: k-;caseC: k+=2;break;caseD: k=k%2;continue;caseE: k=k*10;break;default: k=k/3;k+; while(c,则下面程序的运行结果是【】include#includemain() float x,y,z;scanf(“%f%f”,z=x/y;while(1)if(fabs(z)1.0) x=y;y=z;z=x/yelse break;printf(“%fn”,y);A) 1.500000B) 1.600000C) 2.000000D) 2.400000【题 5.53】
12、下面程序的运行结果是【 】includemain() int a,b;for (a=1,b=1;a=20) break;if(b%3= =1)b+=3;continue;b-=5;printf(“%dn”,a);A) 7B) 8C) 9D) 10【5.54】 下面程序的运行结果是【 】includemain() int i,j,x=0;for (i=0;imain() int i;for (i=1;i#includemain()long i=1;【1】pi=0;while(i*i=1e6)pi=【2】;i+;pi=sqrt(6.0*pi);printf(“pi=%10.6fn“,pi);【题
13、5.59】有 1020 个西瓜,第一天卖一半多两个,以后每天卖剩下的一半多两个,下面的程序统计卖完所需的天数。请填空.#includemain()int day,x1,x2;day=0;x1=1020;while(【1】)x2=【2】;x1=x2;day+;printf(“day=%dn“,day);【题 560】下面程序的功能是用辗转相除法求两个正整数的最大公约数。请填空【】 #includemain() int r,m,n;scanf(“%d%d”,if( m”,则下面程序的运行结果是【】#includemain() char c;while(c=getchar()!=?) putchar
14、(+c);【题 562】下面程序的运行结果是【 】#includemain() int a,s,n,count;a=2;s=0;n=1;count=1;while (count” ,则下面程序的运行结果是【 】#includemain() int v1=0,v2=0;char ch;while(ch=getchar()!=#)switch(ch) case a:case h:default: v1+;case 0:v2+;printf(“%d,%dn”,v1,v2);【题 564】执行下面程序段后,k 的值是【 】k=1,n=263;do k*=n%10;n/=10; while(n);【题
15、565】下面程序段中循环体的执行次数是【 】a=10;b=0;do b+=2;a-=2+b;while(a=0);【题 566】下面程序段的运行结果是【 】x=2;do printf(“*”);x-; while(!x=0);【题 567】下面程序段的运行结果是【 】i=1;a=0;s=1;doa=a+s*I;s=-s;i+; while(i;printf(“a=%d”,a);【题 568】下面程序的功能是用 do-while 语句求 11000 之间满足“用 3 除余 2,用 5 除余 3,用 7 除余 2”的数,且一行只打印 5 个数。请填空。#includemain() int i=j,
16、j=0;do if(【1】) printf(“%4d”,i);j=j+1;if(【2】) printf(“n”);i=i+1; while(imain() int n,count,max,t;count=max=0;scanf(“%d”,do t=【1】;if(t=0) +count;else if(maxmain() int a,d,sum;a=2;d=3;sum=0;do sum+=a;a+=d;if(【】) printf(“%dn”,sum); while(summain() int I,s=1,m=0;for(i=1;i”,则下面程序的运行结果是【】 。#includemain() i
17、nt k=0,n;do scanf(“%d”, k+=n; while(n!=-1);printf(“k=%d n=%dn”,k,n);【题 573】下面程序的运行结果是【】#includemain() int I,x,y;i=x=y=0;do +i;if(i%2!=0) x=x+i;i+;y=y+i+; while(imain() int a,b,i;a=1;b=3;i=1;do printf(“%d,%d,”,a,b);a=(b-a)*2+b;b=(a-b)*2+a;if(i+%2=0) printf(“n”); while(bmain() int a,b,m,n;m=n=1;scanf(
18、“%d%d”,do if(a0)m=2*n; b+;else n=m+n;a+=2;b+; while(a=b);printf(“m=%d n=%d”,m,n);【题 576】下面程序段是找出整数的所有因子。请填空。#includescanf(“%d”,i=1;for( ; 【 】; ) if(x%i=0)printf(“%3d”,i);i+;【题 577】鸡兔共有 30 只,脚本有 90 只,下面程序段是计算鸡兔各有多少只。请填空。for(x=0;xmain() int i,t=1,s=0;for(i=1;i#includemain()int i,n;double h,s,a,b;n=100
19、;h=【1】;s=0.5*(sin(a)*cos(a)+sin(b)*cos(b);for(i=1;imain() int i;double e,new;【1】;new=1.0;for(i=1; 【2】;i+) new/=(double)i;e+=new;printf(“e=%10fn”,e);【题 5.83】下面程序的运行结果是【】 。#includemain() int i,t,sum=0;for(t=i=1;iMain() int i;for(i=1;imain() int i,j=4;for(i=j;imain() int n,k=1,s=0,m;for(n=1;ns) printf(
20、“%d”,n);【题 5.88】下面程序的功能是求 1000 以内的所有完全数。请填空。 (说明:一个数如果恰好等于它的因子之和(除自身外) ,则称该数为完全数。例如:6=1=2+3,6 是完全数)#includemain() int a,i,m;for(a=1;amain() int i,j,k,l=1;for(i=0;imain() int i,j,k;printf(“n gong bai hein”);for(i=0;i,则下面程序的运行结果是【】 。 #includemain() int m,n;printd(“Enter m,n:”);scanf(“%d %d”,while(m!=n
21、) while(mn) m-=n;While(nm)n-=m;printf(“m=%dn”,m);【题 5.92】下面程序的运行结果是【】 。#includemain() int y,a;y=2;a=1;while(y-!=-1) doa*=y; a+ while(y-);printf(“%d,%d”,a,y);【题 5.93】下面程序的运行结果是【】 。#include main()int i,j;for(i=0;i main()int i,j;for(i=4;i=1;i-) for j=1;j main()int i,k=0;for(i=1; ;i+) k+;while(kmain() i
22、nt i,j,k,count=0;for(i=1;imain() int i,s,k,count=0;for(i=100;imain() int i,a;for(i=1;imain() inti,j;for(i=0; 【1】;i+) j=i*10+6;if(【2】) continue;printf(“%d”,j);【题 5.101】下面程序的运行结果是【】 。#includemain() int i=1;while(imain() int i,j,k=19;while(i=k-1) k-=3;if(k%5= =0) i+;continue;else if(kmain() int a,y;a=1
23、0;y=0;do a+=2;y+=a;if(y50) break; while(a=14);printf(“a=%d,y=%dn”,a,y);【题 5.104】下面程序的运行结果是【】 。#includemain() int i=5;do switch(i%2) case4:i-;break;Case6:i-;continue;i-;i-;printf(“%d”,i); while(i0);5.3 编 程 题【题 5.105】每天苹果 0.8 元,第一天买 2 个苹果;从第二天开始,每天买前一天的 2 倍,直至购买的苹果数达到不超过 100 的最大值,编写程序求每天平均花多少钱。【题 5.10
24、6】试编程序,找出 199 之间的全部同构数,同构数是这样一组数;出现在平方数的右边。例如:5 是 25 右边的数,25 是 625 右边的数,5 和 25 都是构数。【题 5.107】假设 x,y 是整数,编写程序求 xy 的最后 3 位数,要求 x,要从键盘输入。【题 5.108】编写程序,从键盘输入 6 名学生的 5 门成绩,分别统计出每个学生的平均成绩。第五章 循环结构5.1 选择题【题 5.1】C 【题 5.2】B 【题 5.3】A【题 5.4】A 【题 5.5】D 【题 5.6】C 【题 5.7】 【题 5.8】 【题 5.9】【】【】 【题 5.10】 【】 【】 【题 5.11
25、】 【题 5.12】 【题 5.13】 【题 5.14】 【题 5.15】 【题 5.16】 【题 5.17】 【题 5.18】 【题 5.19】 【】 【】 【题 5.20】 【】 【】【题 5.21】 【】 【】【题 5.22】 【题 5.23】 【题 5.24】 【题 5.25】 【题 5.26】 【题 5.27】 【题 5.28】 【题 5.29】 【题 5.30】【题 5.31】 【题 5.32】D 【题 5.33】C 【题 5.34】C 【题 5.35】D 【题 5.36】D 【题 5.37】 【】B 【2】C【题 5.38】B 【题 5.39】D 【题 5.40】C【题 5.41
26、】 【1】C 【2】D【题 5.42】 【1】C 【2】A【题 5.43】D 【题 5.44】B 【题 5.45】D 【题 5.46】C 【题 5.47】C 【题 5.48】C【题 5.49】C 【题 5.50】B 【题 5.51】 【题 5.52】 【题 5.53】 【题 5.54】【题 5.55】 【题 5.56】5.2 填空题【题 5.57】 【1】c!=n 【2】c=0float sum=0.0, ave;do sum+=0.8*buy;day+; buy*=2; while(buymain( ) int i;for(i=1;1main( ) int i; for(i=1;1main( ) int i,x,y;long last=1;printf(“Input xand y:”);scanf(“%d%d”,for(i=1;imain( ) int i,j;float g,sum,ave;for(i=1;i60 65 77 86 9071 93 63 80 9087 83 91 95 89100 93 89 92 8552 63 66 70 71运行结果 No.ave=73.80No.ave=75.60No.ave=79.40No.ave=89.00No.ave=91.80No.ave=64.40