




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章,循环结构程序设计,2,回顾,多重if结构就是在主if块的else部分中还包含其他if块嵌套if结构是在主if块中还包含另一个if语句C语言规定,嵌套if结构中每个else部分总是属于前面最近的那个缺少对应的else部分的if语句switch结构也可以用于多分支选择。用于分支条件是整型表达式,而且判断该整型表达式的值是否等于某些值(可以罗列的),然后根据不同的情况,执行不同的操作条件运算符是ifelse语句的另一种表现形式,3,目标,理解为什么使用循环结构熟练掌握while循环的使用熟练掌握do-while循环的使用理解while和do-while循环的区别熟练使用for循环理解break和continue语句的用法熟练使用嵌套循环,4,循环的必要性5-1,intresult1,result2,result3;intresult4,result5;result1=1*10;printf(110%dn,result1);result2=2*10;printf(210%dn,result2);result3=3*10;printf(310%dn,result3);result4=4*10;printf(410%dn,result4);result5=5*10;printf(510%dn,result5);,1101021020310304104051050,输出结果,重复语句,5,循环的必要性5-2,110=10210=20310=30410=40510=50,0+1,1+1,2+1,上个数字+1,.,重复(上个数字+1)10,6,C语言中的各种循环,while,do-while,for,需要多次重复执行一个或多个任务的问题考虑使用循环来解决,7,while循环5-1,while(表达式)语句;,while循环的一般语法:,while(index100).index+;,计算表达式的值,当值为真(非0)时,执行循环体语句,一旦条件为假,就停止执行循环体。如果条件在开始时就为假,那么不执行循环体语句直接退出循环。,工作原理,示例,8,while循环5-2,规则1:,while(循环条件),循环条件中使用的变量需要经过初始化,9,while循环5-3,规则2:,while(index100).index+;,while循环主体中的语句必须修改循环条件的值,否则会形成死循环,while(1),10,#includevoidmain()intnum=1,result;while(num=10)result=num*10;printf(%d10%dn,num,result);num+;,while循环示例1,1,null,10,2,输出:11010,21020310304104051050610607107081080910901010100,11,100,10,11,#includevoidmain()inti,s;s=0;i=1;while(i=3)s=s+i;i+;printf(“s=%d,i=%dn,s,i);,while循环示例2,0,1,2,1,输出:S=6,i=4,3,3,6,4,11,12,问题描述:写一个程序,要求它从摄氏温度0度到250度,每隔20度为一项,输出一个摄氏温度与华氏温度的对照表,同时要求对照表中的条目不超过10条。,#includevoidmain()intc=0,count=0;doublef;while(c=250,while循环示例3,输出:1:C=0,F=32.002:C=20,F=68.003:C=40,F=104.004:C=60,F=140.005:C=80,F=176.006:C=100,F=212.007:C=120,F=248.008:C=140,F=284.009:C=160,F=320.0010:C=180,F=356.00,13,问题描述:输入全班50个学生某门课程的成绩,求他们的平均成绩。,#includevoidmain()intx,n=1;floatsum=0,ave;while(n=50)scanf(“%d”,while循环示例4,13,14,问题描述:任意输入10个整数,求出其中的最大值。,#includevoidmain()intx,max,i;scanf(“%d”,while循环示例5,14,15,问题描述:输入两个任意的正整数,求它们的最大公约数。,#includevoidmain()intm,n,r,t;scanf(“%d%d”,while循环示例6,15,16,do-while循环,do语句;while(表达式);,while循环的一般语法:,do.scanf(“%c”,它先执行循环体中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。,工作原理,示例,17,问题描述:猜数游戏。要求猜一个介于110之间的数字,根据用户猜测的数与标准值进行对比,并给出提示,以便下次猜测能接近标准值,直到猜中为止。,do-while循环示例1,intnumber=5,guess;printf(猜一个介于1与10之间的数n);doprintf(请输入您猜测的数:);scanf(%d,猜一个介于1与10之间的数请输入您猜测的数:3太小请输入您猜测的数:5您猜中了!答案为5,输入数字5后,dowhile循环中的条件为假,输出结果消息后,程序终止。,18,#includevoidmain()inti,s;s=0;i=1;dos=s+i;i+;while(i=3);printf(“s=%d,i=%dn,s,i);,do-while循环示例2,0,1,2,1,输出:S=6,i=4,3,3,6,4,18,19,问题描述:设有一个分数数列2/1,3/2,5/3,8/5,13/8,21/13,编程求出这个数列的前20项之和。,voidmain()inta=1,b=2,i=1;floatsum=0;dosum+=(float)b/a;b=b+a;a=b-a;i+;while(i=20);printf(“sum=%fn,sum);,do-while循环示例3,19,20,问题描述:输入全班学生某门课程的成绩,求他们的平均成绩。学生人数不确定,当输入为负数时表示输入结束。,voidmain()intx,n=0;floatsum=0,ave;scanf(“%d”,do-while循环示例4,20,21,while循环5-1,while(表达式)语句;,while循环的一般语法:,while(index100).index+;,计算表达式的值,当值为真(非0)时,执行循环体语句,一旦条件为假,就停止执行循环体。如果条件在开始时就为假,那么不执行循环体语句直接退出循环。,工作原理,示例,21,22,do-while循环,do语句;while(表达式);,while循环的一般语法:,do.scanf(“%c”,它先执行循环体中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。,工作原理,示例,22,23,问题描述:猜数游戏。要求猜一个介于110之间的数字,根据用户猜测的数与标准值进行对比,并给出提示,以便下次猜测能接近标准值,直到猜中为止。,do-while练习1,intnumber=5,guess;printf(猜一个介于1与10之间的数n);doprintf(请输入您猜测的数:);scanf(%d,猜一个介于1与10之间的数请输入您猜测的数:3太小请输入您猜测的数:5您猜中了!答案为5,输入数字5后,dowhile循环中的条件为假,输出结果消息后,程序终止。,23,24,问题描述:编程计算12-22+32-42+52-202,voidmain()inti=1,k=1,sum=0;dosum=sum+k*i*i;i+;k=-k;while(i=20);printf(“sum=%dn,sum);,do-while练习2,24,25,比较while和do-while循环,while(循环条件)循环体;,do循环体;while(循环条件);,do-while循环是先执行后判断,所以,即使开始条件为假,循环体也至少会被执行一次。,while循环是先判断后执行,所以,如果条件为假,则循环体一次也不会被执行。,比较while和do-while循环的工作原理,25,26,通过示例比较,intvalue,r_digit;value=0;doprintf(n请输入一个数:);scanf(%d,intvalue,r_digit;value=0;while(value=0)printf(n请输入一个数:);scanf(%d,该程序用do-while循环将数字左右反转,同样的程序用while循环将数字左右反转,26,27,嵌套while循环,嵌套while循环的语法,while(i=10).while(i=j).,外循环,内循环,只有在内循环完全结束后,外循环才会进行下一趟。,28,问题描述:用“*”打印一个直角三角形图案。图案如下所示:*,嵌套while循环示例,voidmain()intnstars=1,stars;while(nstars=10)stars=1;while(stars=nstars)printf(*);stars+;printf(n);nstars+;,内层循环控制每行打印*号的个数,外层循环控制打印的行数,输出:*,29,嵌套do-while循环,嵌套do-while循环的语法,do.do.while(.);.while(.);,外循环,内循环,只有在内循环完全结束后,外循环才会进行下一趟。,30,总结,循环结构的特点是,在给定条件成立时,重复执行某程序段,直到条件不成立为止while循环用于在给定条件为真的情况下重复执行一组操作,while循环先判断后执行do-while循环先执行后判断,因此循环将至少执行一次在循环中,需要修改循环变量的值以改变循环条件,否则有可能形成死循环循环嵌套必须将内层循环完整的包含在外层循环中,31,for(表达式1;表达式2;表达式3)语句;,for循环的一般语法:,for循环,counter=0;inum=1;cnt=100;,counter=10;inum0,counter+;inum=inum+1;cnt-,分号用于分隔for循环的三个表达式,1、计算表达式1的值,通常为循环变量赋初值;2、计算表达式2的值,即判断循环条件是否为真,若值为真则执行循环体一次,否则跳出循环;3、计算表达式3的值,这里通常写更新循环变量的赋值表达式,然后转回第2步重复执行;,工作原理,1,2,3,4,32,#includevoidmain()inti,s;s=0;for(i=0;i=3;i+)s=s+i;printf(“s=%d,i=%dn,s,i);,for循环示例1,输出:S=6,i=4,32,33,for循环示例2,#includevoidmain()intnumber,count,factorial=1;printf(n请输入任意一个正整数:);scanf(%d,请输入任意一个正整数:5,5,1,1,2,120,6,循环执行五次,5的阶乘=120,34,逗号运算符,for(i=0,j=max;i=max;i+,j-)printf(“n%d+%d=%d”,i,j,i+j);,for语句中的三个表达式都可以是逗号表达式逗号表达式就是通过“,”运算符隔开的多个表达式组成的表达式逗号表达式从左往右计算。逗号运算符在C语言运算符中的优先级最低,35,for循环示例2,#includevoidmain()inti,j,max;printf(请输入一个值n);printf(根据这个值可以输出以下加法表:);scanf(%d,循环执行max次,初始化语句只执行一次,请输入一个值根据这个值可以输出以下加法表:50+5=51+4=52+3=53+2=54+1=5,36,for循环的表达式,for循环中有三个表达式for语句中的各个表达式都可以省略分号分隔符不能省略,for(;);,可省略,不能省略,37,省略表达式1,intnum=0;for(;num=10;num+)printf(%dn,num*2);,inta=0,n;printf(n输入n的值:);scanf(%d,相当于省去了为循环变量赋初值,此时应在for语句之前给循环变量赋初值,38,省略表达式2,for(num=1;num+).,即不判断循环条件,也就是认为表达式2始终为真,这时应在循环体内设法结束循环,否则将成为死循环,39,省略表达式3,for(i=1;i=100;)sum=sum+1;i+;,即省去修改循环变量的值,但此时应在循环体内设法结束循环,40,省略三个表达式,for(;)printf(这将一直进行下去);i=getchar();if(i=X|i=x)break;,即不为循环变量赋初值,不设置循环条件(认为表达式2为真值),不修改循环变量的值,无终止地执行循环体。此时应在循环体内设法结束循环,否则会成为死循环,41,break语句5-1,break语句可以改变程序的控制流break语句用于do-while、while、for循环中时,可使程序终止循环而执行循环后面的语句break语句通常在循环中与条件语句一起使用。若条件值为真,将跳出循环,控制流转向循环后面的语句如果已执行break语句,就不会执行循环体中位于break语句后的语句在多层循环中,一个break语句只向外跳一层,42,break语句5-2,跳出for循环for(;)printf(这将一直进行下去);i=getchar();if(i=X|i=x)break;,跳出while循环while(1)if(x=10)break;,跳出do-while循环doif(x=10)break;while(x15);,43,问题描述:统计从键盘输入的若干个字符中有效字符的个数,以换行符作为输入结束。有效字符是指第一个空格符前面的字符,若输入字符中没有空格符,则有效字符为除了换行符之外的所有字符。,#includevoidmain()intcount=0,ch;printf(n请输入一行字符:);while(ch=getchar()!=n)if(ch=)break;count+;printf(n共有%d个有效字符。n,count);,break语句示例,H,0,_,请输入一行字符:Helloworld,共有5个有效字符,1,循环执行5次,5,44,continue语句5-1,continue语句只能用在循环里continue语句的作用是跳过循环体中剩余的语句而执行下一次循环对于while和do-while循环,continue语句执行之后的动作是条件判断;对于for循环,随后的动作是变量更新,45,continue语句5-2,while()continue;,while()break;,跳出整个循环,继续下一次循环,46,问题描述:求整数1100的累加值,但要求跳过所有个位为3的数。,#includevoidmain()inti,sum=0;for(i=1;i=100;i+)if(i%10=3)continue;sum+=i;printf(sum=%dn,sum);,continue语句示例,null,0,13,1,循环执行到i=13,78,输出:sum=4570,1,循环执行到i=101,101,4570,47,问题描述:用“*”输出一个菱形图案,图案如下:*,嵌套循环示例1,voidmain()inti,j,k;for(i=1;i=4;i+)for(j=1;j=4-i;j+)printf();for(k=1;k=2*i-1;k+)printf(*);printf(n);for(i=1;i=3;i+)for(j=1;j=i;j+)printf();for(k=1;k=7-2*i;k+)printf(*);printf(n);,输出:*,*,控制打印的行数,控制每行打印的空格数,控制每行打印的*号数,控制打印的行数,控制每行打印的空格数,控制每行打印的*号数,48,问题描述:打印输出100至200之间的全部素数。分析:素数是指只能被1和它本身整除的数。算法比较简单,先将这个数被2除,如果能整除,且该数又不等于2,则该数不是素数。如果该数不能被2整除,再看则是否能被3整除。如果被3整除,并且该数不等于3,则该数不是素数,否则再判断是否被4整除,依此类推,该数只要是能被小于本身的某个数整除时,就不是素数。,嵌套循环示例2,voidmain()inti,j,n;n=0;for(i=100;i=200;i+)j=2;while(i%j!=0)j+;if(i=j)printf(%4d,i);n+;if(n%8=0)printf(n);printf(n);,输出:从100到200之间所有的素数为:101103107109113127131137139149151157163167173179181191193197199,控制每行输出8个素数,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二手双绞线传输器维修合同7篇
- 小额借款项目抵贷款合同书范本3篇
- 西宁市租赁房屋协议3篇
- 新解读《GB-T 32618-2016政务服务中心信息公开业务规范》
- 淮安市物流公司保洁劳务合同协议4篇
- 新解读《GB-T 31147-2014人身损害护理依赖程度评定》
- 新解读《GB-T 31176-2014休闲咨询服务规范》
- 疫情期间租车合同范本
- 合法种植养殖合同范本
- 别墅灯具采购合同范本
- 中国茶文化故事解读
- DB3203-T 1043-2023 社区居家医疗护理服务规范
- 中医护理在疼痛中的应用
- GB/T 44977-2024卫星导航定位基准站网终端定位服务安全技术规范
- 《业务员基本素质》课件
- 人教PEP版五年级上册英语全册教案(6个单元整体教学设计)
- 七年级体育 立定跳远测验教案 人教新课标版
- 手卫生知识答题及答案
- 学校保洁外包服务投标方案(技术方案)
- Pep小学英语六年级上册教案-全册
- 人教鄂教版六年级科学上册全册教学设计教案
评论
0/150
提交评论