第五章循环结构程序设计 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<10) { if ( i<1) continue; if (i= =5) break; i++; } } A.4 B.5 C.6 D.无限 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.for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来。 4.下面程序的运行结果是( ) #include<stdio.h> 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<<stdio.h> 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<stdio.h> 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<2;i++) for (j=0:j<=4:j++) if (2)break; a+: } a++: 1 printf("%d\n",a) 执行结果是」 实验实训 1.目的和要求: (1)掌握用while语句、do-while语句和for语句实现循环的方法。 (2)掌握三种循环语句的区别。 (3)掌握控制循环次数的方法和循环结束条件的正确使用。 2.实验内容: (1)打印出以下图案 ②*本**米 ③ 33 44 (2)阅读程序说明,然后将程序补充完整并运行。 程序说明:计算c=1+1/1+1/2+1/31++1/n!,直到最后一项的值小于106。 maino long nj: floate: ni=1:i=1: while(1.0/nj>=Ie-6)
执行结果是 。 程序四 main( ) { int i,j,a=0; for (i=0;i<2;i++) { for (j=0;j<=4;j++) { if (j%2) break; a++; } a++; } printf("%d\n",a); } 执行结果是 。 实验实训 1.目的和要求: (1)掌握用 while 语句、do-while 语句和 for 语句实现循环的方法。 (2)掌握三种循环语句的区别。 (3)掌握控制循环次数的方法和循环结束条件的正确使用。 2.实验内容: (1) 打印出以下图案: (2)阅读程序说明,然后将程序补充完整并运行。 程序说明:计算 e=1+1/1!+1/2!+1/3!+.+1/n!,直到最后一项的值小于 10 −6 。 main() { int i,n; long nj; float e; nj=1;i=1; ; while (1.0/nj>=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)