




已阅读5页,还剩84页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章循环结构,2,结构化程序设计的三种控制结构,顺序结构选择结构循环结构,3,顺序结构,A,B,4,P,A,B,T,F,选择结构,P,A,T,F,5,P=1,A1,P=2,A2,P=n,An,F,T,T,T,F,F,F,选择结构,6,循环结构,P,A,T,F,P,A,T,F,7,学习目标,while语句dowhile语句for语句,8,内容,4.1循环结构概述4.2while循环4.3do-while循环4.4for循环4.5循环的嵌套4.6循环的中途退出4.7算法举例,9,4.1循环结构概述,【例4-1】从键盘上随机的输入10个数,输出其中最大数模仿【例3-6】从键盘上随机的输入三个数,输出最大数,10,【例3-6】从键盘上随机的输入三个数,输出最大数,#includevoidmain(void)inta,b,c,max;printf(输入三个数:);scanf(%d%d%d,11,【例4-1】从键盘上随机的输入10个数,输出其中最大数,#includevoidmain(void)inta0,a1,a2,a3,a4,a5,a6,a7,a8,a9,max;printf(“输入10个数:);scanf(%d%d%d%d%d%d%d%d%d%d,12,if(a1max)max=a1;if(a2max)max=a2;if(a3max)max=a3;if(a4max)max=a4;if(a5max)max=a5;if(a6max)max=a6;if(a7max)max=a7;if(a8max)max=a8;if(a9max)max=a9;printf(%d是最大数n,max);,13,【例4-1】从键盘上随机的输入10个数,输出其中最大数,#includevoidmain()intx,max,n=1;scanf(%d,用循环程序实现,14,14,循环结构特点,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。,15,C语言中,实现循环的语句,1用while语句2用do-while语句3用for语句4用goto语句和if语句构造循环,16,while(表达式)语句,4.2while循环,while语句一般形式执行流程,17,while循环特点,先判断表达式,后执行循环体说明:循环体有可能一次也不执行(当循环条件不满足)while语句中的表达式可以是任何表达式,常用的是关系表达式和逻辑表达式,只要表达式的值为真(非0)即可继续循环,#includemain()inti=1,sum=0;while(i=5)sum=sum+i;i+;printf(%d,sum);,18,【例】用while循环求,isum0sum=0+1=1i+21sum=1+2=3i+33sum=3+3=6i+46sum=6+4=10i+510sum=10+5=15i+615,1+2+3+100?,100,循环变量初值,循环变量终值,循环变量增值,19,注意,当循环体包含一个以上的语句时,应该用花括弧括起来,以复合语句形式出现。如果不加花括弧,while语句的执行范围只到while后面的第一个分号处,while(i=100);sum=sum+i;i+;,while(i=100)sum=sum+i;i+;,while(i=100)sum=sum+i;i+;,20,main()inti,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%d,sum);,【例4-2】求前n个数的平方和,n;,scanf(%d,n,*i;,printf(n=%d,sum=%d,n,sum);,输入一个整数n:5n=0,sum=55Pressanykeytocontinue,输入一个整数n:0n=0,sum=0Pressanykeytocontinue,21,【例4-1】从键盘上随机的输入10个数,输出其中最大数。使用while语句完成,#includevoidmain()intx,max,n=1;scanf(%d,while(n0?1:xb)printf(%d,a);elseprintf(%d,b);,printf(%d,ab?a:b);,例求a+|b|value=b0?a+b:a-b;,29,结合方向:自右向左如:x0?1:x0?1:(xy?1:1.5/xy,值为1.0;x=y,值为1.5,30,【例4-4】输入两个正整数a和b,求其最大公约数,几个自然数公有的约数,叫做这几个数的公约数。其中最大的就是最大公约数。方法1定义法具体步骤:STEP1从键盘上输入m,n,求k=m1e-5);pi=pi*4;printf(pi=%lfn,pi);,42,#includemain()inti,sum=0;scanf(%d,#includemain()inti,sum=0;scanf(%d,while和dowhile比较:,1sum=55,1sum=55,11sum=0,11sum=11,43,for(exp1;exp2;exp3)statement,4.4for循环,for语句一般形式执行流程,44,for(循环变量赋初值;循环条件;循环变量增值)循环体语句;,for语句一般应用形式,45,说明for语句中exp1,exp2,exp3类型任意,都可省略,但分号;不可省略无限循环:for(;)for语句可以转换成while结构,for(exp1;exp2;exp3)循环体语句;,exp1;while(exp2)循环体语句;exp3;,46,【例4-8】计算s=1+2+3+.+99+100,#includevoidmain()inti,s=0;for(i=1;i=100;i+)s=s+i;printf(s=%d,n=%dn,s,i);,47,【例4-9】用for语句实现,从0开始,输出n个连续的偶数,#includevoidmain()inti,n;printf(inputn:);scanf(%d,#includevoidmain()inta=0,n;printf(inputn:);scanf(%d,48,【例4-10】打印出所有“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身如:153是一个“水仙花数”,因为153=135333,题目分析:利用for循环检验100-999中的每一个三位数对于每个三位数分解出个位、十位、百位数,然后判断它是否为“水仙花数”。设n为一个三位数,i、j、k分别为百位,十位和个位,怎样获得i、j、k呢?,49,#includevoidmain()inti,j,k,n;printf(waterflowernumberis:);,50,for(n=100;n1000;n+)i=n/100;j=n/10%10;k=n%10;if(n=i*i*i+j*j*j+k*k*k)printf(%-5d,n);printf(n);,51,【例4-11】有一分数序列:2/1,3/2,5/3,8/5,3/8,.,求出这个数列的前20项之和,题目分析:,a=a+bb=a,t=a,t,52,#includevoidmain()intn,t,number=20;floata=2,b=1,s=0;for(n=1;n=number;n+)s=s+a/b;t=a;a=a+b;b=t;printf(sumis%9.6fn,s);,53,几种循环的比较,for和while先判断循环条件后执行循环体,do-while语句先执行循环体后判断循环条件。while、do-while、for可以相互替换使用。通常使用情况while语句多用于循环次数不定的情况。for语句多用于循环次数固定的情况。do-while语句多用于至少要运行一次的循环控制,54,(3)用for循环语句#includevoidmain()ints=0,i;for(i=1;i=10;i+)s=s+i;printf(s=%d,s);,54,【例4-12】求s=1+2+3+10,分别用三种循环语句实现,比较他们的异同。,(2)用dowhile循环#includevoidmain()ints=0,i=1;dos=s+i;i+;while(i=10);printf(s=%d,s);,(1)用while循环#includevoidmain()ints=0,i=1;while(i=10)s=s+i;i+;printf(s=%d,s);,55,4.5循环的嵌套,三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环,但不能相互交叉,(1)while()while().,(2)dodowhile();.while();,(3)while()dowhile();.,56,main()inti,j,k;printf(ijkn);for(i=0;i2;i+)for(j=0;j2;j+)for(k=0;k2;k+)printf(%d%d%dn,i,j,k);,【例4-13】分析程序的运行结果,0,0,0,0,0,1,0,1,0,0,1,1,1,0,0,1,0,1,1,1,0,1,1,1,i,j,k,57,【例4-14】打印出乘法九九表,58,找一找i和j的规律行i从19,即i(1i9)列j从1i,即j(1ji),59,#includemain()inti,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-3dt,j,i,j*i);printf(n);,60,【例4-15】两个乒乓球队进行比赛,各出三人。甲队为a、b、c三人,乙队为x、y、z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x、z比,请编程序找出三对比赛选手的名单。,题目分析分别用三个字符变量i、j、k表示甲队a、b、c三人的对手用穷举法把所有的情况列出来,把a、b、c三人对手是同一个人的情况排除,再把a的对手是x,c的对手是x和z的情况排除。,61,#includevoidmain()chari,j,k;for(i=x;i=z;i+)for(j=x;j=z;j+)for(k=x;k=z;k+)if(i!=j,62,例用循环打印出如下的图形,*,1、简化问题1i51j52、稍复杂一点1i51ji3、再复杂一点1i51j5-i,*,*,63,#includemain()inti,j,k;for(i=1;i=5;i+)for(j=1;j=5-i;j+)printf();for(j=1;j=i;j+)printf(*);printf(n);,打印第i行的空格,打印第i行的星号,打印第i行的换行符,64,4.6循环的中途退出,break语句中止语句功能:在循环语句和switch语句中,终止并跳出循环体或开关体说明:break只能终止并跳出最近一层的结构Break只能用于循环语句或switch语句,65,exp,F,T,while,break;,break;,break;,66,67,voidmain()intn;for(n=1;nn-1,则表明任意i都不能整除n,则n是素数,否则n不是素数,69,#includevoidmain()intn,i;printf(pleaseinputanumber:);scanf(%d,70,程序改进,为了提高程序的执行效率,缩小检验区间检验区间:,2n-1,2sqrt(n),71,#include#includevoidmain()intn,i;printf(pleaseinputanumber:);scanf(%d,sqrt(n);,72,continue语句中断语句功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断仅用于循环语句中,73,假(0),exp3,continue;,continue;,continue;,74,voidmain()intn;for(n=1;n,75,【例4-17】输出能被3和7整除的三位正整数,#includevoidmain()inti;for(i=100;i1000;i+)if(i%3!=0)continue;if(i%7!=0)continue;printf(%d,i);printf(n);,76,4.7算法举例,穷举法递推法迭代法,77,穷举法,基本思想:对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止穷举法是一种重复型算法,通常使用循环穷举法的关键数学模型适宜进行穷举的数学模型决定程序是否正确穷举的范围明确的穷举终止条件决定穷举的效率,范围过大,则效率太低,78,【例4-18】百钱买百鸡,这是一个经典的不定方程的求解问题。其问题如下:公鸡5元一只;母鸡3元一只;小鸡一元3只。问:用100元钱买100只鸡,公鸡、母鸡、小鸡各买多少只?,题目分析:设:要买x只公鸡,y只母鸡,z只小鸡列出方程为:x+y+z=1005x+3y+z/3=100,5,3,1/3,0x200y330z100(z必须是3的倍数),79,#includevoidm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车库出租协议和租赁合同
- 车辆抵押借款协议合同书
- 完善劳动合同管理的实施方案计划
- 浙江婚前协议书
- 水果代理协议书
- 互联网企业员工职业发展决心服务协议
- 医院医生聘用合同协议书
- 早恋处理协议书
- 转让服务费合同协议
- 财税加盟代理合同协议
- 2025年嘉兴市九年级中考语文一模试卷附答案解析
- MOOC 创业基础-暨南大学 中国大学慕课答案
- MTM-1基本方法
- ppt精选模板:热烈欢迎领导莅临指导工作PPT课件
- (完整版)高中化学必修2有机化合物试题.doc
- 可填充颜色的中国地图,世界地图,各省市地图填色
- 彩图——中国各省地质图13四川、重庆、贵州、云南(共12页)
- 化工企业设备管理课程(共80页).ppt
- 防高坠安全专项施工方案
- GQ15型工程钻机
- 厨房物品盘点表
评论
0/150
提交评论