第五章循环结构程序设计.ppt

上传人:仙人指路1688 文档编号:2902254 上传时间:2023-03-01 格式:PPT 页数:44 大小:250.50KB
返回 下载 相关 举报
第五章循环结构程序设计.ppt_第1页
第1页 / 共44页
第五章循环结构程序设计.ppt_第2页
第2页 / 共44页
第五章循环结构程序设计.ppt_第3页
第3页 / 共44页
第五章循环结构程序设计.ppt_第4页
第4页 / 共44页
第五章循环结构程序设计.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《第五章循环结构程序设计.ppt》由会员分享,可在线阅读,更多相关《第五章循环结构程序设计.ppt(44页珍藏版)》请在三一办公上搜索。

1、第五章 循环结构程序设计,内蒙古科技大学工程训练中心,循环语句,while 语句do while 语句for 语句,循环结构用于完成程序中需要重复执行的操作。是结构化程序设计的三种基本结构之一。在C语言中循环语句有三种:,while 语句,条件表达式,循环体,1(真),0(假),一般形式:while(条件表达式)语句;,其特点是:先判断表达式,后执行语句。,while,循环体,循环结构的术语,1.循环条件:是循环结构中的条件表达式。,2.循环体:是在每个循环周期均要执行一次的语句。语句可以是任何语句,简单语句、复合语句、空语句均可以。,(1)条件表达式一般是关系表达式和逻辑表达式。,3.循环变

2、量 是在循环中控制条件表达式是真是假的变量,即控制循环体能否执行的变量。在任一种循环语句中,循环变量均有:,计算从1到10所有整数的累加和,即:1+2+3+4+5+9+10。,#includemain()int sum,i;sum=0;i=1;while(i=10)sum+=i;i+;printf(“sum=%dn”,sum);,例1:,练习题:1.在屏幕的一行上依次输出7个*号。2.计算1100之间是7的倍数的数值之和。,dowhile 语句,一般形式:do 循环体 while(条件表达式);,0(假),do,循环体,条件表达式,1(真),其特点是:先执行循环体,后判断循环条件。,#incl

3、udemain()int sum,i;sum=0;i=1;do sum+=i;i+;while(i=10);printf(“sum=%dn”,sum);,计算从1到10所有整数的累加和,即:1+2+3+4+5+6+7+8+9+10。,例2:,练习题:1.在屏幕的一行上依次输出7个*号。2.计算1100之间是7的倍数的数值之和。,while 语句和do while 语句的比较,while 语句先对表达式进行判断,后执行循环体;do while 语句先执行循环体,后对表达式进行判断。当处理同一个问题时,如果第一次表达式为真时,其结果相同;第一次当表达式为假时,则结果不同。例如:,i=2;c=0;n

4、=2;while(in)c=c+5;i+;printf(“%d”,c);,i=2;c=0;n=2;do c=c+5;i+;while(in);printf(“%d”,c);,for 语句,一般形式:for(表达式1;表达式2;表达式3)循环体,表达式1:循环变量初始值表达式。表达式2:循环变量终止值表达式。(条件表达式)表达式3:循环变量的递增或递减表达式,练习题:1.在屏幕的一行上依次输出7个*号。2.计算1100之间是7的倍数的数值之和。,while 和for循环注意事项:,表达式2可以省略(不判断循环条件),2.for for(i=1;i+)/*等效于for(i=1;1;i+)*/sum

5、+=i;if(i10)break;,1.while while(3)语句 表示无限循环 while(0)语句 表示不进入循环体do-while同上。,作业,计算10!,即1*2*3*.*10。输出12000之间的所有偶数。,#includemain()int i=1,jc=1;while(i=10)jc=jc*i;i+;printf(“%d!=%dn”,n,jc);,作业1:,#includemain()int i=1,jc=1;do jc=jc*i;i+;while(i=10);printf(“%d!=%dn”,n,jc);,#includemain()int i,jc=1;for(i=1;

6、i=10;i+)jc=jc*i;printf(“%d!=%dn”,n,jc);,作业2:输出1到2000之间的偶数。,#includemain()int i;for(i=1;i=2000;i+)if(i%2=0)printf(“%d”,i);,break语句和continue语句,1、break 语句:终止语句的执行。1.使用在switch语句中。2.使用在while、do-while和for循环语句的循环体中。格式:break;,#includemain()int r;float s;for(r=2;r100)break;printf(r=%d,s=%fn,r,s);,2、Continue

7、语句:Continue作用:结束本次循环(即不执行本次循环中尚未执行的语句),进入下一次循环。,continue语句和break语句的区别:continue语句只结束本次循环,而不是终止整个循环。break语句终止整个循环,不再判断循环条件。,例如:输出100-200之间不能被3整除的数据。for(n=100;n=200;n+)if(n%3=0)continue;printf(“%d”,n);,break语句和continue语句,读程序,区别两者的不同,#include main()int i;for(i=1;i=50;i+)if(i%7=0)continue;printf(%dt,i);p

8、rintf(n);,例1 求100999之间的水仙花数。(水仙花数:每位数字的立方和等于该数本身),#includemain()int i,a,b,c;for(i=100;i=999;i+)a=i%10;b=(i/10)%10;c=i/100;if(i=a*a*a+b*b*b+c*c*c)printf(%d,i);,例2:求1-1000之间的同构数。(同构数:该数平方值的后几位数等于该数本身),#includemain()int i,m;for(i=1;i=1000;i+)m=i*i;if(m%10=i|m%100=i|m%1000=i)printf(%6d,i);,同一类型题:从键盘输入一个

9、整数,求它的位数,并打印出每一位上的数字。,作业:,求100到999的水仙花数。(单重循环)求1000以内所有的同构数。(单重循环),循环嵌套,一个循环的循环体中套有另一个循环叫循环嵌套。这种嵌套过程可以一直重复下去。,一个循环外面包围一层循环称为二重循环。一个循环外面包围二层循环称为三重循环。一个循环外面包围多层循环称为多重循环。,while、do-while、for可以互相嵌套自由组合。,while()do while():while()do do while();while();:while();for(;)for(;)do:for(;)while()for(;)while();,循环嵌

10、套的格式:,读程序段:,#includemain()int i,j;i=1;while(i=3)for(j=1;j=i;j+)printf(*);i+;,例1:打印8行7列的星号矩形。,#include main()int i,k;for(i=0;i8;i+)for(k=0;k7;k+)printf(*);printf(n);,例3:求1000以内的完全数。(完全数:该数等于它的因子之和(除自身外。例如:6),#includemain()int i,j,t;for(i=1;i=1000;i+)t=0;for(j=1;ji;j+)if(i%j=0)t=t+j;if(t=i)printf(%d,i

11、);,#includemain()int i,m;printf(please input a number:n);scanf(%d,例4:给定一个整数m,判断该数是否为素(质)数。,m是素数的条件是:m不能被2,3,m-1整除。,求出100200以内的所有素数。,#include#includemain()int m,k,i,n=0;for(m=101;mk)printf(%d,m);,穷举法:,穷举算法:把所有可能的方案一一测试,从中找出符合条件的方案。,例5:百鸡问题:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁、母、雏各多少只?(穷举算法),分别设鸡翁、鸡母、鸡雏各

12、为x,y和z只。100钱全部买了鸡翁,鸡翁最多20只,所以:x0,20 y0,34 z:100-x-y,#includemain()int x,y,z;for(x=0;x=20;x+)for(y=0;y=34,y+)z=100-x-y;if(z%3=0),递推算法:在一个或几个结果的基础上推出下一个结果.,递推算法:,穷举法相同类型的题:1、编程:百马拉百砖.用100匹马拉100块砖,红马拉3块,黑马拉2块,白马两匹拉1块,在红马、黑马和白马不可缺少的情况下,共有几种拉法?2.5.8(课后)p92,例6:求斐波纳契(Fibonacci)数列:1,1,2,3,5,8的前20项(递推算法)。(后一

13、项等于前两项之和),作法1:,#includemain()int i;int f1=1,f2=1;int f;printf(%10d%10d,f1,f2);for(i=3;i=20;i+)f=f1+f2;printf(%10d,f);f1=f2;f2=f;,#includemain()int f1=1,f2=1,i;printf(%6d%6dn,f1,f2);for(i=1;i=9;i+)f1=f1+f2;f2=f1+f2;printf(%6d%6dn,f1,f2);,作法2:,例7:求值,#include#includemain()double n,sum,pa,cj;n=1;sum=0;w

14、hile(1/(n*n)pow(10,-12)sum=sum+1/(n*n);n+;cj=sum*6;pa=sqrt(cj);printf(%f,pa);,相同类型的题:例5.11 P88,例8:统计从键盘上输入的字符中数字字符、大写字符、小写字符、其它符号的个数,用换行结束循环。,#includemain()int sz=0,dx=0,xx=0,qt=0;char ch;scanf(%c,相同类型的题:1.5.7 P92 2.5.10 P92,#includemain()int i,j double t;double sum;sum=0;for(i=1;i=10;i+)/*求和*/t=1;for(j=1;j=i;j+)/*求每个i数阶乘*/t=t*j;sum=sum+t;printf(”sum=%f”,sum);,例9:计算1!+2!+3!+10!。,作法1:,作法2:,#includemain()double t,sum;int n;t=1;sum=0;for(n=1;n=20;n+)t=t*n;sum=sum+t;printf(%f,sum);,例10:求两个整数的最大公约数。求法:拿一个数去除另外一个数取余,然后拿被除数去除余数,直到余数为0,#includemain()int m,n;int r;scanf(%d%d,谢 谢 大 家!,

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号