循环结构程序设计课件.pptx

上传人:rrsccc 文档编号:10349476 上传时间:2021-05-10 格式:PPTX 页数:51 大小:301.72KB
返回 下载 相关 举报
循环结构程序设计课件.pptx_第1页
第1页 / 共51页
循环结构程序设计课件.pptx_第2页
第2页 / 共51页
循环结构程序设计课件.pptx_第3页
第3页 / 共51页
循环结构程序设计课件.pptx_第4页
第4页 / 共51页
循环结构程序设计课件.pptx_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《循环结构程序设计课件.pptx》由会员分享,可在线阅读,更多相关《循环结构程序设计课件.pptx(51页珍藏版)》请在三一文库上搜索。

1、第4章 循环结构程序设计,1,循环结构程序设计,4.1 while语句 4.2 do-while语句 4.3 for语句 4.4 break语句和continue语句 4.5 循环语句的嵌套 4.6 案例分析与实现,本章内容(4学时),2,循环结构程序设计,掌握三种循环控制语句: while语句、do-while语句和for语句(重点) 能够区分三种循环控制语句的应用场合 掌握break、continue语句(难点) 熟练应用for、while 和do-while语句进行程序设计(重点、难点),学习目标,3,循环结构程序设计,4.1 while语句,4,循环结构程序设计,在学生信息管理系统的设

2、计中有许多需要重复处理的问题。例如:向系统添加100个学生的成绩;统计100个学生中C语言成绩不及格的学生人数;对100个学生某门课程的成绩进行排序等。,5,循环结构程序设计,循环结构,例如,要输入100个学生的分数。 int score100; / /定义数组。,程序代码: int i=0; while(i100) printf(第%d个学生的分数: ,i+1); scanf(%d, ,程序代码: printf(第1个学生的分数:); scanf(%d,6,循环结构程序设计,while语句,while语句又叫“当”语句,其一般格式为:,while(条件表达式) 循环体,7,循环结构程序设计,

3、例4-1 编写程序求1+2+3+100的和,问题: 如果是求从1到100的所有奇数之和,程序应如何修改?,#include void main() /p4-7.c int sum=0,i=1; while(i=100) sum=sum+i; i=i+1; printf(sum=%dn,sum); ,8,循环结构程序设计,注意事项,对控制变量要做三方面的工作: 1、对循环控制变量赋初值。 2、将循环控制变量写入正确的控制条件。 3、对循环控制变量值的更新。,9,循环结构程序设计,例4-2 小红今年12岁,她父亲比她大30岁,编程计算:多少年后 父亲的年龄是她的年龄的2倍,此时她的年龄是多少?,#

4、include void main () /p4-8.c int x=12,y=42,m; while(2*x!=y) x+; y+; m=x-12; printf(经过的年数:%d,小红年龄:%d,父亲年龄:%d n,m, x, y); ,编程思路: 循环条件是什么? 重复执行的操作是什么?,10,循环结构程序设计,例4-3 输出1200之间所有用3除余2、且用5除余3的数。,#include /p4-2.c void main() int i=1; while(i=200) if(i%3=2) ,编程思路:采用穷举法,11,循环结构程序设计,例4-4 鸡兔同笼问题。已知笼中鸡和兔共100只

5、,共有274只脚,求鸡和兔各有多少只?,void main( ) /p4-3.c int a=1,b; /a和b分别表示鸡和兔的数量 while(a100) b=100-a; if(a*2+b*4=274) printf(鸡有:%d只,兔有:%d只n,a,b); a+; ,12,循环结构程序设计,#include /p4-4.c #include void main( ) double sum=0,pi,c; /c为当前项 int n=1; /n为循环控制变量 while (n=100) c=pow(-1,n+1)/(2*n-1); sum=sum+c; /求和 n+; pi=4*sum; p

6、rintf(pi=%lfn,pi); ,补充问题: 1)如果不调用数学函数pow(),能否采用其它方式来控制每一项的符号位? int s=1; c=s*1.0/(2*n-1); s=-s;,13,循环结构程序设计,void main( ) /p4-9.c double sum=0,pi,c=1; int n=1,s=1; while (fabs(c)=1e-6) c=s*1.0/(2*n-1); sum=sum+c; s=-s; n+; ,如果不指定计算的项数,而是根据精度要求计算,如:计算到最后一项的绝对值小于10-6 为止,程序应如何修改?,14,循环结构程序设计,4.2 do-while

7、语句,15,循环结构程序设计,do while语句又叫直到型循环语句,一般格式为: do 循环体 while(条件表达式);,16,循环结构程序设计,例4-6 编写程序求1+2+3+100的和。,#include /p4-1.c void main() int sum=0,i=1; do sum=sum+i; i=i+1; while(i=100); printf(sum=%dn,sum); ,while语句和do while语句两者有何区别?,17,循环结构程序设计,例4-7 在使用软件时,经常用到口令,编写一个口令输入程序,让用户不停地输入口令,直至输对为止,假设口令为100。,#incl

8、ude /c4-11.c void main() int pwd; printf(请输入口令:); scanf(%d, ,#include /p4-11 void main() int pwd; do printf(请输入口令:); scanf(%d, ,对于先执行,再判断的应用场合,采用do-while语句实现更方便。,18,循环结构程序设计,4.3 for语句,19,循环结构程序设计,一般格式为: for(循环变量赋初值;条件表达式;循环变量增值) 循环体,20,循环结构程序设计,回顾知识,while(条件表达式) 循环体,do 循环体 while(条件表达式);,for(循环变量赋初值;

9、条件表达式;循环变量增值) 循环体,21,循环结构程序设计,例4-8 编写程序求1+2+3+100的和。,#include void main() int sum=0,i=1; do sum=sum+i; i+; while(i=100); printf(sum=%dn,sum); ,#include void main() int sum=0,i=1; while(i=100) sum=sum+i; i+; printf(sum=%dn,sum); ,22,循环结构程序设计,例4-8 编写程序求1+2+3+100的和。,#include void main() int sum=0,i; fo

10、r(i=1;i=100;i+) sum=sum+i; printf(sum=%dn,sum); ,问题: 1)如果求从1到100之间的 所有奇数之和,上面的 程序应如何修改? 2)什么情况下最适合采用 for语句? 什么情况下最 适合采用while语句或 do while语句?,23,循环结构程序设计,例4-8 编写程序求1+2+3+100的和。,#include void main() int sum=0,i; for(i=1;i=100;i+=2) sum=sum+i; printf(sum=%dn,sum); ,问题: 1)如果求从1到100之间的 所有奇数之和,上面的 程序应如何修改?

11、 2)什么情况下最适合采用 for语句? 什么情况下最 适合采用while语句或 do while语句?,24,循环结构程序设计,例4-9 我国现有13亿人,按年0.2%的增长速度,10年后将有多少人?,#include /c4-9.c void main() double m=13; int i; for(i=1;i=10;i+) m=m*(1+0.002); printf(10年后的人口数为:%lfn,m); ,25,循环结构程序设计,例4-10 输出所有水仙花数。所谓水仙花数是指一个3位数,其各位数字的立方和等于该数本身。例:15313+53+33,void main() /p4-5.c

12、 int m,bai,shi,ge;/ bai、shi、ge分别对应百位、十位和个位 for(m=100;m=999;m+) bai=m/100; shi=(m%100)/10; ge=m%10; if(m=bai*bai*bai+shi*shi*shi+ge*ge*ge) printf(%d ,m); ,26,循环结构程序设计,例4-11 有一数列2、3、5、8、,从第3项开始,每一项为其前两项之和,输出这个数列的前20项。,void main() /p4-6.c int i,a1=2,a2=3,a3; printf(%d %d ,a1,a2); for (i=3;i=20;i+) a3=a

13、1+a2; printf(%d ,a3); a1=a2; a2=a3; ,编程思路: 一个典型的递推问题。,27,循环结构程序设计,4.4 break语句和continue语句,28,循环结构程序设计,1. break语句,(1) 语句形式: break;,(2) 作用: 结束break所在的当前循环,跳出break所在的循环结构。,29,循环结构程序设计,例4-12 从键盘输入一个正整数,判断该数是否为素数。,void main() /p4-12.c int i,m; scanf(%d, ,问题: 数学上已经证明:只要m不被2sqrt(m) 之间的数整除,它就是素数。根据这一原理,上述程序应

14、如何改进?,30,循环结构程序设计,2. continue语句,(1) 语句形式为: continue; 作用 使本次循环提前结束,即跳过循环体中continue语句后面尚未执行的循环体语句,但不结束整个循环,继续进行下一次循环的条件判别。,31,循环结构程序设计,例4-13 输出100以内不能被3整除的自然数。,#include /p4-14.c void main() int i; for(i=1;i=100;i+) if(i%3=0) continue; printf(%d ,i); ,32,循环结构程序设计,4.5 循环语句的嵌套,33,循环结构程序设计,一个循环语句的循环体中又包含有

15、另一个完整的循环语句就叫做嵌套循环。,34,循环结构程序设计,例4-14 输出100到200之间的所有素数。,void main() /p4-15.c int i,m,k; for(m=100;mk)printf(%d ,m); ,35,循环结构程序设计,例4-15 采用穷举算法输出所有水仙花数。,#include /p4-17.c void main() int i,j,k; for(i=1;i10;i+) for(j=0;j10;j+) for(k=0;k10;k+) if( (i*100+j*10+k)=(i*i*i)+(j*j*j)+(k*k*k) printf(%d , i*100+

16、j*10+k); ,36,循环结构程序设计,例4-16 数学史上有一个著名的百钱买百鸡问题。公鸡一只5元,鸡母一只3元,小鸡3只1元,用100元钱买100只鸡,问公鸡、母鸡和小鸡各买多少?,void main() /p4-16.c int a,b,c; /a、b、c分别表示公鸡、母鸡和小鸡的数量 for(a=0;a=19; a+) for(b=0;b=33;b+) c=100-a-b; if(5*a+3*b+c/3=100 ,37,循环结构程序设计,例4-17 从键盘输入一个数n,求1!+2!+n!。,void main()/p4-18.c int i,j,n; long p,sum=0; /

17、p保存阶乘,sum保存累加和 scanf(%d, ,38,循环结构程序设计,* * * * *,例4-18 输出以下图形,39,循环结构程序设计,* * * * *,如何打印: *,40,循环结构程序设计,分析: 带*行一共 n 行, 每一行输出的空格数、*个数跟行号有关, 第 i 行,*数为 2*i-1, 空格数为 n-i。 算法: 当 i = n 则 输出 n-i 个空格 ; 输出 2*i-1 个 *; 换行; ,41,循环结构程序设计,void main() / c4-18.c int i, j, n; scanf(“%d”, ,42,循环结构程序设计,4.6 案例分析与实现,43,循环

18、结构程序设计,例4-19 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾又多吃了一个,第二天早上又将剩下的桃子吃掉一半又多吃了一个,以后每天早上都吃了前一天剩下的一半加一个,到第10天早上时,就只剩下一个桃子了,求第一天共摘了多少桃子?,编程思路: 采用逆向思维的方式,从后往前倒推。设某一天的桃子数为x,则之前一天的桃子数为(x+1)*2。按照这一公式从第10天开始倒推,第10天的桃子数x=1。,44,循环结构程序设计,#include void main() /c4-19.c int i, x=1;/x=1是第10天的桃子个数 for(i=9; i0; i-) x=(x+1)*2; /计算

19、每天的桃子个数 printf(第一天共摘了%d只桃子n,x); ,45,循环结构程序设计,例4-20:有一分数序列 、 、 、 、,从第2项开 始,每一项的分子为前一项的分子与分母之和,每一项的分母为前一项的分子,编程求这个数列的前 n 项之和。,编程思路: 该程序需要用到递推算法,根据序列的第1项推出第2项,再根据第2项推出第3项,。,46,循环结构程序设计,void main() int a=2, b=1, t, i, n; double sum=0.0; scanf(%d, ,47,循环结构程序设计,测试,1、指出下列程序的运行结果: void main() int x=1,i=1; f

20、or ( ;x=10) break; if(x%2!=0) x+=3; continue; x-=1; printf(“%dn”,x); printf(“%dn”,i); ,结果: 10 8,48,循环结构程序设计,s*(1+r) r*s/(s-1) n=K,49,循环结构程序设计,本章小结,循环语句包括两部分:循环控制条件和循环体。 (2) 循环语句有三种:for、while、do-while语句。 应用场合:循环次数事先明确的,一般使用for语句; 循环次数不明确的,一般使用while或do-while语句。 (3) break语句提前终止循环,跳出循环体; continue语句提前结束本次循环,进入下一次循环。 (4) 三种循环语句可以互相嵌套,构成多重循环。,50,循环结构程序设计,作业,1、练习书上的例题和习题 2、上机第4、5次作业,51,循环结构程序设计,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1