第三节 for循环-【单招零距离】计算机专业综合(下)

2025-04-23
| 2份
| 10页
| 108人阅读
| 0人下载

内容正文:

总复习方案·第五章循环结构程序设计 }while(num!=0&.&.t<-4): 第三节for循环 知识体系 e.Y5 [for循环的格式、for循环的运行过程 for循环的使用说明 循环问题常见算法 知识梳理 ©Y⑤ 一、for循环的格式 1.在C语言中,for语句使用最为灵活,它完全可以 while循环和do一while循环。 它的一般形式为: 2.运行过程: 它的执行过程如下: (1)先求解 (2)求解 ,若其值为真(非0),则执行for语句中指定的 ,然后执行 下面第(3)步;若其值为 ,则 ,转到第5)步。 (3)求解 (4)转回上面第 步继续执行。 (5)循环结束,执行for语句下面的后续语句。 3.说明: for语句最简单的应用形式也是最容易理解的形式如下: for( )循环体: 循环变量赋初值一般是一个赋值语句,它用来给循环控制变量赋初值:循环条件是一个 ,它决定什么时候退出循环;循环变量增量,定义循环控制变量每循环 一次后按什么方式变化。这三个部分之间用“”分开。 for(i=1;i<100;i)sum=sum+i; 先给i赋初值1,判断i是否小于等于100,若是则执行循环体语句,之后值增加1。再重 新判断,直到条件为假,即>100时,结束循环。 相当于: ·91· 单招零距离·计算机专业综合·下册 i=1: while(i<=100) sum=sum+i; i++;} 对于for循环中语句的一般形式,就是如下的while循环形式: 表达式1: while(表达式2) {语句 表达式3:》 注意: (1)for循环中的“表达式1(循环变量赋初值)”、“表达式2(循环条件)”和“表达式3(循环 变量增量)”都是 ,即可以缺省,但“ ”不能缺省。 (2)省略了“表达式1(循环变量赋初值)”,表示在「or语句中没有对循环控制变量赋初 值。但可以在for语句之前对 赋初值。 (3)省略了“表达式2(循环条件)”,则在循环体中如不做其它处理时便成为 for(i=1;;i+)sum=sum+i; 相当于: i=1; while(1) sum=sum+i; i++; } (4)省略了“表达式3(循环变量增量)”,则不对循环控制变量进行操作,这时可在循环语 句体中加入修改 的语句。 for(i=1:i=100:) {sum=sum十i; i++; } (5)省略了“表达式1(循环变量赋初值)”和“表达式3(循环变量增量)”。 for(:i=100:) sum=sum+i; i十+: } 相当于: while(i<=100) {sum=sum十i: i++; (6)3个表达式都可以省略。 for(;;)语句: ·92· 总复习方案·第五章循环结构程序设计 相当于: while(1)语句: (7)表达式1可以是设置循环变量的初值的赋值表达式,也可以是其他表达式。 for(sum=0;i←100;i++)sum=sum+i; (8)表达式1和表达式3可以是一个简单表达式也可以是逗号表达式。 for(sum=0,i=1;i<100;i+)sum=sum+i; 或: for(i=0,j=100:i=j:i++,j--)k=i+j: (9)表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只 要其值非零,就执行循环体。 for(i=0;(c=getchar())!= ';i+c); 或 for(;(c=getchar())!= ';) printf("%c",c): 二、for循环解决实际问题的一般步骤与while循环类似 三、循环问题常见的算法 1.迭代算法:如累加、累乘,猴子吃桃问题、求逆序数、辗转相除求最大公约数等。 2.穷举法:如求特殊数(水仙花数、素数、同构数、完数、百钱买百鸡问题等)。 3.循环的嵌套。如下一节的多重循环输出星号的文本作图问题,分解因子等。 典例精析 @r⊙ 【例1】写出下列程序的执行结果: #include "stdio.h" int main() { int i; for(i=0;i<5:i++) printf("i=%d",i): printf(" i=%d",i): 【分析】i从0变化到4,执行循环体。但当i=5时才退出循环,执行for循环之外的输出。 【答案】程序运行结果为: i=0i=1i=2i=3i=4 i=5 【例2】写出下列程序的执行结果。 #include "stdio.h" int main() {inti=70,t=2: for(:i5;i-=2) ·93· 单招零距离·计算机专业综合·下册 t=t+2: printf("t=%d",t): 【分析】循环变量的初值为70,终值为5,步长为一2,则循环次数为:(终值一初值)/步长 +1次,为33次,则t中加了33个2即66,则t的值为68。 【答案】程序运行结果:t=68 【例3】写出下列程序的运行结果: #include <stdio.h int main() int i; for(i=1:i<=5:i++) switch (i%5) {case 0:printf("*")break: case 1:printf("#");break; default:printf(" "); case 2:printf ("8.");break: } 【分析】for循环与switch结构相结合或其它循环与switch结构相结合是我们编程经常 要用的。注意switch结构中的break是退出switch结构,不是退出for循环。 【答案】程序运行结果: #& & &.¥ 【例4】下面程序运行的结果是: #include <stdio.h> int main() int i,t,s; for(t=0,s=0,i=1:i=10;i++) {t=t+i++; s=s十t: printf("*"): printf(" "): printf("i=%d,t=%d,s=%d",i,t,s); 【分析】1=t十i十十:i先参加累加,再自增加1,for语句中也有i十+,所以可以看成是步 长为2,则可以推出i的变化为1,3,5,7,9,到11则退出循环。循环5次,输出5个星号,最终 s中加的是1+1+3十1+3+5+…+1十3+5+9=55。 【答案】程序运行结果为: ·94· 总复习方案·第五章循环结构程序设计 关光米米米 i=11,t=25,s=55 【例5】编程求m!=1¥2*3*.¥m的值,要求以12*3*.*m=m!的格式输出。 如:m=5,则输出为1*2*3*.*5=120。请完成程序。 include "stdio.h" int main() (int i,m: double s=1: scanf("%d",&.m): /兴光关米兴米关关关米米关关米米米BEGIN关*关米米关关关米兴米米关兴兴/ printf("=%.f",s); } 【答案】 for(i=1;i<=m;i) (if(i!=m) printf("%d米",i): else printf("%d",i): s=s*i; 巩固练习 ©Y⊙ l.若x,y均为int型变量,且x=100,则下面关于for循环的判断正确的是( )。 for(y=100:x!=y;十+x,y++)printf("********¥"): A.循环体只执行一次 B.循环体一次也不执行 C.是死循环 D.输出结果:****兴** 2.以下循环语句能正确运用的是( )。 A.for(;;x++) B.for(x=0,i=1:i<=10:i++) C.for(;x>0;x--) D.for(x=0:i<5:i++) 3.执行以下语句的结果是( )。 int i; for(i=1;i<10:i++) if(++i%2==0) if(i++%3==0)》 if(++i%5==0) printf("%d ",i); ·95· 单招零距离·计算机专业综合·下册 A.234 B.345 C.456 D.无任何输出 4.若a,b均是int型变量,则执行如下语句的结果是? for(a=1;a<5;a+=2) {for(b=1:b<5:b++) printf("%d ",a b): printf(" "); } 5.写出下列程序的执行结果: #include <stdio.h int main() int i,number,sum=0; for(number=i=1;i<=10;i+) sum+=number;i+; f(i%3==0) number=-i; else number=i; printf("sum=%d",sum); 拓展练习 1.写出下列程序的运行结果: #include "stdio.h" int main() int i,a,b,c; char ch; for(a=0,b=0,c=0,i=26:i1:i--) {ch=90+i-26; switch(ch) case'A':a+: case'F':b十+; default:c十+;break; } if(a>-1)a++: if(b1)b++; else if(c>=1)c; printf("a=%d,b=%d,c=%d,ch=%c",a,b,c,++ch); ·96· 总复习方案·第五章循环结构程序设计 2.写出下列程序的结果: #include <stdio.h> int main() int a,b,c,i; a=1:b=1: for(i=1:i<=5:i+=1) {c=a十b: printf("%3d",c); a=b;b=c; } 3.用近似公式y=1+1/1!+1,2!+1/3!+..+1.n!求y的近似值。n从键盘录入。 请完成程序: #include "stdio.h" int main() int i,n; double p=1,s=1; scanf("%d",&.n); /关关米米0关类英米米荣BEGIN0关并米关关关关关关*/ /0关兴关关关米0关米米END关兴兴0关关米关兴米米/ printf("y=%.8f",s): } 4.从键盘上输入一个数,判断该数是否为素数。请完成程序: #include "stdio.h" int main() int i,n,flag=1; printf("Please input an integer number:n"); scanf("%d",&n); /*米关关关关*关关关米BEGIN关举举*为0关并米0/ /*兴*米米***米米米END*米米*关**兴关**/ if(flag==1) printf("%d is prime",n): else printf("%d isn't a prime",n); ·97· 单招零距离·计算机专业综合·下册 技能实践 》@ 1.打印输出1到1000之间的全部“同构数”。所谓“同构数”是指这样的一个数:它出现在 它的平方数的右端。如5的平方是25,5是居右端的数,5就是一个同构数。25的平方是 625,因此25也是同构数,完成所缺程序。 include "stdio.h" int main() int x,d,k,t; for(x=1;x=1000:x++) if(x>10)k=100: if(x>100)k=1000: d=x¥x; t=d/k; if( =x) printf("%d,%d ",x,d): 2.程序改错题:已知某球从100米高度自由落下,落地后反复弹起,每次弹起的高度都是 上次的一半。求此球第10次落地后反弹起来的高度和球所经过的路程。程序中有三处错误, 请改正。 #include "stdio.h" int main() int i; float h=100,s=0,r; /米米**米**米务米米米*米米f0Und**米米米米米米*米**兴并关/ for(i=1:i<10:i++) {r=h/2: /米*米**米**兴米*米彩*米f0ud米*米*¥关米¥米关¥兴米米0/ s=s十h; h=r/2; printf("h=%f s=%f",h,s); } 3.程序设计题:有一数列,2,32,53,85,13/8.…,编写程序求该数列的前8项及前8项 之和,小数点后取三位。最后的sum输出为:sum=13.244, #include "stdio.h" int main() ·98 总复习方案·第五章循环结构程序设计 int i; float a=2,b=1,sum=0,x; for(i=1:i=8:i++) /关米兴米关关光关关米米关关关米BEGIN兴关0关米米关***关关关米关/ /*关关关关关关米关米类关关关关END米米关兴0米米米*米关*关关关 printf(" sum=%.3f",sum); 第四节循环结构的嵌套 知识体系 ©r⊙ 「循环铺助语句的作用 多重循环的概念、多重循环的运行过程 多重循环的使用说明 多重循环解决实际问题的一般步骤和方法 知识梳理 ©Y⊙ 一、循环辅助语句 1.break语句 功能:在循环体中, 循环体,即提前 ,接着执行循环下面的语句。 说明:break 的switch结构或循环结构。 注意:break语句如用在switch结构中,则是用来退出switch结构。 如:编程求s=1+2+3十4+…+100,但是当s的值大于30时停止,输出此时s的值。 #include "stdio.h" int main() int i,s=0; for(i=1:i=100:i++) s=s+i; if(s>30)break; printf("s=%d",s); ·99·sum=sum+t∗flag; flag=-flag; i++; } 【技能实践】  1.(1)m%n (2)x∗y/n  2.(1)floats=0,k=1;改为floats=1,k=1; (2)while(k>0.001)改为 while(k>=0.001) (3)k=1/n∗(n+1);改为k=1/(n∗(n+1));  3.while(n! =0) {m=m∗10+n%10;  n=n/10; } 第二节 do-while循环 【知识梳理】 一、do-while循环的格式 2.循环体 计算表达式的值 真 假 3.(1)至少要执行一次 分号 语法 (2)结束 假 死循环 【巩固练习】  1.B 2.A 3.B  4.c,99  5.a=8,b=7  6.digit=x%10; sum=sum+digit∗digit∗digit; x=x/10; 【拓展练习】  1.3 4 6 7 9 10  2.a=5,b=13,i=4  3.(1)sum+f3/f2 (2)++i<=8或i++<8 【技能实践】  1.(1)x-y==c (2)n<3&&flag==0  2.(1)r=n%m;改为r=m%n; (2)gbs=x∗y/n;改为gbs=x∗y/m; (3)gys=r;改为gys=m;  3.num=num∗2; d=num; printf("%d",d); t++; num=num-d; 第三节 for循环 【知识梳理】 一、for循环的格式 1.取代 for(表达式1;表达式2;表达式3)循环体 2.(1)表达式1 (2)表达式2 循环体 假(0) 结束循环 (3)表达式3 (4)(2) 3.循环变量赋初值 循环条件 循环变量增量 关系表达式或逻辑表达式 ; (1)选择项 ; (2)循环控制变量 (3)死循环 (4)循环控制变量 【巩固练习】  1.B 2.B 3.D  4.1 2 3 4 3 6 9 12  5.sum=9 【拓展练习】  1.结果为:a=2,b=8,c=46,ch=B  2.2 3 5 8 13  3.for(i=1;i<=n;i++) {p∗=i; s+=1/p; }  4.for(i=2;i<=n-1;i++) if(n%i==0) {flag=0; break; } 【技能实践】  1.(1)k=10 (2)d-t∗k  2.(1)for(i=1;i<10;i++)改为for(i=1;i<= 10;i++)  (2)s=s+h改为s=s+h+r;  (3)h=r/2改为h=r;  3.sum+a/b; printf("%.3f\t",a/b); r=b; b=a; a=x+a; 第四节 循环结构的嵌套 【知识梳理】 一、循环辅助语句 1.终止并跳出 结束循环 终止并跳出最近一层 2.本次循环 尚未执行 是否执行循环体 判断 􀅰81􀅰 单招零距离􀅰计算机专业综合􀅰下册

资源预览图

第三节 for循环-【单招零距离】计算机专业综合(下)
1
第三节 for循环-【单招零距离】计算机专业综合(下)
2
第三节 for循环-【单招零距离】计算机专业综合(下)
3
第三节 for循环-【单招零距离】计算机专业综合(下)
4
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。