第五章循环结构程序设计 1.1选择 I,以下程序中,While循环的次数是() Main() int i=0; While(i<10) {if(i<1)continue if(i==5)break. i++ A4 C.6D.无限 2.C语言中while和do-while循环的主要区别是() A.do-while的循环体少无条件执行一次 B.while的循环控制条件比do-while的循环控制条件严格 C.do-while允许从外部转到循环体内 D.do-while的循环体不能是复合语句 3.下面有关for循环的正确描述是() A.fOr循环只能用于循环次数己经确定的情况。 B.for循环是先执行循环体语句,后判断表达式。 C.在for循环中,不能用break语句跳出循环体。 D.f循环的循环体语句中,可以包含多条语句,但必须用花括号括起来。 4.下面程序的运行结果是() #include<stdio.h main() inty=10: Do fy_-while(-y): Printf(%dn”y-方
第五章 循环结构程序设计 1.1 选择 1.以下程序中,While 循环的次数是( ) Main( ) { int i=0; While (i main( ) { int y=10; Do {y_-;}while(-y); Printf(“%d\n”,y-);
A-1 B.1 D.0 2.2编程题 1.输入两个正整数m和,求其最大公约数和最小公倍数 2.求1!+2!+3!+.+20: 3.求出所有的“水仙花数”。“水仙花数”是指一个3位数,其各位数字的立方和等 于该数的本身。例如:153是一个“水仙花数”,因153=13+53+33。 -蓉营器 5.用牛顿迭代法求下列方程在1.5附近的根。 2x3.4x2+3x-6-0 3.3阅读程序,写出程序运行结果 程序一#include main() inti-.a=0: while(i<20) for() if((%)=0)break else i++ i+=ll;a+=i, printf("%dn"a): 执行结果是
} A.-1 B.1 C.8 D.0 2.2 编程题 1.输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 2.求1!+2!+3!+.+20! 3.求出所有的“水仙花数”。“水仙花数”是指一个 3 位数,其各位数字的立方和等 于该数的本身。例如:153 是一个“水仙花数”,因 153=1 3 +5 3 +3 3 。 4.求 s= = 100 k 1 k + = 50 1 2 k k + = 10 1 1 k k 。 5.用牛顿迭代法求下列方程在 1.5 附近的根。 2x 3 -4x 2 +3x-6=0 3.3 阅读程序,写出程序运行结果 程序一 #include main( ) { int i=0,a=0; while (i<20) { for (; ;) { if ((i%10)==0) break; else i++; } i+=11;a+=i; } printf("%d\n",a); } 执行结果是
程序二main() inta,y; a=10y=0 do a+=2:y+=a printf"a=%dy=%dn"ay): if(y>20)break; while(a=14): 执行结果是 程序三main() inta-0,i; for(i=1;i<5;i++) switch(i) case: case 3:a+-2, case 1: case 2:a+=3 default:a+-5. printf("%d\n",a);
程序二 main ( ) { int a,y; a=10;y=0; do { a+=2;y+=a; printf("a=%d y=%d\n",a,y); if (y>20) break; } while (a=14); } 执行结果是 。 程序三 main( ) { int a=0,i; for (i=1;i<5;i++) { switch(i) { case 0: case 3:a+=2; case 1: case 2:a+=3; default:a+=5; } } printf("%d\n",a); }
执行结果是 程序四ain() int i,j,a=0: for (i=0;i=Ie-6)
执行结果是 。 程序四 main( ) { int i,j,a=0; for (i=0;i=1e-6) ① * * * * * * * * * * * * * * * * * * * * * * * * * ② * * * * * * * * * * * * * * * * * * * * * * * * * ③ 1 2 2 2 3 3 3 3 3 4 4 4 4 4 4 4 5 5 5 5 5 6 6 6 7
{nj=nj*iei+l,e=」 printf("e=%fe). 在以上程序的基础上,分别按下列要求修改程序并运行。 ①程序中能否将变量定义为it类型?为什么? ②程序中的“1.0m”可否写成“m”?为什么? ③改用do-while语句实现上面的程序功能。 (3》阅读程序说明,然后将程序补充完整并运行。 程序说明:从键盘输入的4个整数中,找出第一个能被7整除的数,若找到,输出此 数后退出循环:若未找到,输出“not exis过”。 main() int i a for(i=l:i<=4.i++) {scanf(%d”,&x if(a%7-=0) (printf(%"a): } if (i=5) printf 方 在以上程序的基础上,分别按下列要求修改程序并运行: ①另外定义一个变量ag,用1g来判断是否有能被7整除的数。 ②如果能被7整除的数不止一个,要求统计个数。 答案 (I)答案:main) int i,n,s; Scanf("n-%d".&n) for(i=1;i<-n;i++) printf("n=%d,s=%d"n.s); 运行结果为:n=50/ =50,5=3641 (2)答案:main0 (intn.a.i=1.s.t. s=0,=0, printf("a,n=:"), scanfr%d %d"&a &n) while(i<=n)
{ nj=nj*i;i=i+1;e= ; } printf(“e=%f”,e); } 在以上程序的基础上,分别按下列要求修改程序并运行。 ①程序中能否将变量 nj 定义为 int 类型?为什么? ②程序中的“1.0/nj”可否写成“1/nj”?为什么? ③改用 do-while 语句实现上面的程序功能。 (3) 阅读程序说明,然后将程序补充完整并运行。 程序说明:从键盘输入的 4 个整数中,找出第一个能被 7 整除的数,若找到,输出此 数后退出循环;若未找到,输出“not exist”。 main() { int i,a; for (i=1;i<=4;i++) { scanf(“%d”,&x); if (a%7==0) { printf(“%d”,a); ; } } if (i==5) printf( ); } 在以上程序的基础上,分别按下列要求修改程序并运行: ①另外定义一个变量 flag,用 flag 来判断是否有能被 7 整除的数。 ②如果能被 7 整除的数不止一个,要求统计个数。 答案: (1) 答案:main() { int i,n,s; Scanf(“n=%d”,&n); for (i=1;i<=n;i++) s=s+i; printf(“n=%d,s=%d”,n,s); } 运行结果为:n=50 n=50,s=3641 (2) 答案:main() { int n,a,i=1,s,t; s=0;t=0; printf(“a,n=:”); scanf(“%d,%d”,&a,&n); while (i<=n)
s=s+t; a=a*10】 + printf("a+aa+aaa+.-%dn"s). 运行结果为:an=2,5/ aaa+aaa+.=-24690 (3)答案main0 main() (intsl,i.n,s.j.s-0:n-0. float s=0.t=1: for(=1i=10:i++) int n; {s1=0:n=i for(n=1:n<=20:nt+) for(j=1j<-nj++) ( sl=sl*j ss+t; S5+s1 printf("!+2+++0!=%cn"s): printf(“s-%dr”,s) 1+21+3+.+201=2.56133e+18 (4)答案main0 (inti.n float s.t for(n=10,n<=50,n=nt10) {s=0 for(i=l:i<-n.i++) {t=1/(2i ss+t, printf("n-%d.s-%f.n.s). (5)答案main0 int ij.k.n printf(“水仙花”数是” for(n=100:n<1000:n++) {i=n/100
{ t=t+a; s=s+t; a=a*10; ++i; } printf(“a+aa+aaa+.=%d\n”,s); } 运行结果为:a,n=2,5 a+aa+aaa+.=24690 (3)答案 main() main() { int s1,i,n,s,j;s=0;n=0; { float s=0;t=1; for (i=1;i<=10;i++) int n; { s1=0;n=i; for (n=1;n<=20;n++) for (j=1;j<=n;j++) { t=t*n; s1=s1*j; s=s+t; s=s+s1; } } printf(“1!+2!+3!+.+20! =%e\n”,s); printf(“s=%d”,s); } } 1!+2!+3+.+20!=2.56133e+18 (4) 答案 main() { int i,n; float s,t; for (n=10;n<=50;n=n+10) { s=0; for (i=1;i<=n;i++) { t=1/(2^i); s=s+t; } printf(“n=%d,s=%f”,n,s); } } (5) 答案 main() { int i,j,k,n; printf(“水仙花”数是:”); for (n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10;
if (n==ii*ij*j*j+k*k*k) printfr"n") 运行结果为:153370371407 (6)答案main0 ”&a,&b) m=a;n=b:p=m*n; while(rl=0) {=a%b: b=r, printf(“最小公倍数%dn”",pb,或m*n/b (7)答案main0 int nl.n2.n3: nl=100,n2-50,n3=10: 1oas1=0.s2=0.s3=0.s0: for (k=1:k-(e-5)
if (n==i*i*i+j*j*j+k*k*k) printf(“%4d”,n); } printf(“\n”); } 运行结果为:153 370 371 407 (6) 答案 main() { int m,n,a,b,r,p; scanf(“%d,%d”,&a,&b); m=a;n=b;p=m*n; while (r!=0) { r=a%b; a=b; b=r; } printf(“最小公倍数%d\n”,p/b); 或 m*n/b } (7)答案 main() { int n1,n2,n3; n1=100;n2=50;n3=10; int k; (float k;) float s1=0,s2=0,s3=0,s=0; for (k=1;k main() { float x,x0,f,f1; x=1.5; do { x0=x; f=((2*x0-4)*x0+3)*x0-6 f1=(6*x0-8)*x0+3; } while (fabs(x-x0)>=(e-5);
printf(The root of requation is%5.2n) The root of equation is 2:00 (9)答案#include main() (floatx0.x1.x2.fx0.fx1.fx2: do printf"Enter xl x2:"): scanf(%&x&x2) x11*2*x14*1+3 f2=x2*(x*x2-4)*x2+3)-6 while (fxl*fx2>0) do {x0=(x1+x2)/2 fx0=x0*(2*x0-4)*x0+3-6 if(fx0*f1)<0) {x2=x0,fx2=fx0, else {x1=x0,fx1=fx0:} while(fabs(fx0)-(e-5)) printf("x=%6.5f\n",x0): Enter x1 x2:-10.10 X=2.00 上机实验答案:
printf(“The root of requation is %5.2f\n”); } The root of equation is 2:00 (9)答案 #include main() { float x0,x1,x2,fx0,fx1,fx2; do { printf(“Enter x1 & x2:”); scanf(“%f,%f”,&x1,&x2); fx1=x1*((2*x1-4)*x1+3)-6; fx2=x2*((x*x2-4)*x2+3)-6; } while (fx1*fx2>0); do { x0=(x1+x2)/2; fx0=x0*((2*x0-4)*x0+3)-6; if ((fx0*fx1)=(e-5)); printf(“x=%6.5f\n”,x0); } Enter x1 & x2:-10,10 x=2.00 上机实验答案: