您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 循环结构程序设计1.ppt
第五章循环结构程序设计《C语言程序设计》第五章循环结构程序设计本章主要内容:5.1循环概述5.2while语句5.3do-while语句5.4for语句本章重点:熟练掌握三种循环语句来处理重复性的问题;深刻理解循环的概念、用法和常规的循环程序设计方法。重点掌握单循环和双重循环的程序设计。学会使用控制循环的两个语句,能在适当的时候停止循环或使循环继续。学会使用变量跟踪表来跟踪循环程序的执行过程。5.5break和continue语句5.6多重循环5.7综合应用举例作业《C语言程序设计》5.1循环概述引例:输入30名同学的成绩,计算全体同学的平均分。思路1:intx1,x2,x3,…,x30;intsum;scanf(“%d,%d…%d”,&x1,&x2,…&x30);sum=x1+x2+…+x30;printf(“%f”,sum/30.0);循环结构程序设计《C语言程序设计》循环结构是结构化程序设计三种基本结构之一,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。几乎所有实用的程序都包含循环。熟练掌握选择结构和循环结构的概念及使用,是程序设计的最基本的要求。C语言中循环包括:1.while语句2.do-while语句3.for语句4.goto语句和if语句配合循环结构程序设计《C语言程序设计》语法格式为:while(表达式)语句执行过程:5.2while语句—“当型”循环表达式语句NY循环结构程序设计《C语言程序设计》[引例]输入30名同学的成绩,计算全体同学的平均分。main(){inti,s,x;s=0;i=1;while(i=30){scanf(“%d”,&x);s+=x;i++;}printf(“%f\n”,s/30.0);}0→s,1→ii≤30读xs+=x输出s/30.0i++NY循环结构程序设计复合语句《C语言程序设计》[例5.1]求1+2+3+4+5的和。分析:对引例的算法进行修改main(){inti,s;i=1;s=0;while(i=5){s+=i;i++;}printf(“Sum=%d\n”,s);}循环结构程序设计0→s,1→ii≤30读xs+=x输出s/30.0i++NYs5s+=i《C语言程序设计》运行过程分析:变量跟踪表[例5.1]求1+2+3+4+5的和。main(){inti,s;i=1;s=0;while(i=5){s+=i;i++;}printf(“Sum=%d\n”,s);}循环结构程序设计is10213364105156《C语言程序设计》循环的控制:循环变量[例5.1]求1+2+3+4+5的和。main(){inti,s;i=1;s=0;while(i=5){s+=i;i++;}printf(“Sum=%d\n”,s);}循环结构程序设计循环变量给循环变量赋初值使循环变量发生变化《C语言程序设计》[例5.2]求5!,即求1×2×3×4×5的积。main(){inti,p;i=1;p=1;while(i=5){p*=i;i++;}printf(“5!=%d\n”,p);}循环结构程序设计ip112132642451206《C语言程序设计》[例5.3]求1!+2!+3!+4!+5!之和。main(){inti,p,s;i=1;p=1;s=0;while(i=5){p*=i;s+=p;i++;}printf(“Sum=%d\n”,s);}循环结构程序设计ips112132642451206013933153《C语言程序设计》main(){inti=1,s=0;while(i_____){________}printf(“Sum=%d\n”,s);}[例5.4]求100以内的奇数之和,即求:1+3+5+……+99的和。循环结构程序设计100s+=i;i+=2;100if(i%2!=0)s+=i;i++;=50s+=2*i-1;i++;《C语言程序设计》语法格式为:do语句while(表达式);执行过程:5.3do-while语句—“当型”循环循环结构程序设计表达式语句NY《C语言程序设计》[例5.5]求1+2+3+4+5的和。main(){inti,s;i=1;s=0;do{s+=i;i++;}while(i=5);printf(“Sum=%d\n”,s);}运行过程分析:变量跟踪表循环结构程序设计is10213364105156《C语言程序设计》[例5.6]while与do-while的比较:求1+2+3+4+5的和。用while语句用do-while语句main(){inti,s=0;i=6;while(i=5){s+=i;i++;}printf(“Sum=%d\n”,s);}循环结构程序设计main(){inti,s=0;i=6;do{s+=i;i++;}while(i=5);printf(“Sum=%d\n”,s);}运行结果:Sum=0运行结果:Sum=6《C语言程序设计》语法格式为:for(表达式1;表达式2;表达式3)语句执行过程:5.4for语句—“计数式”循环循环结构程序设计表达式2语句NY表达式1表达式3《C语言程序设计》[例5.7]用for语句求1+2+3+4+5的和。main(){inti,s=0;for(i=1;i=5;i++){s+=i;}printf(“Sum=%d\n”,s);}循环结构程序设计循环变量给循环变量赋初值使循环变量发生变化循环体。通常是复合语句《C语言程序设计》说明:1.表达式1和表达式3既可以是简单的表达式,也可以是逗号表达式;可以与循环变量有关,也可以无关。求1+2+3+4+5,可以写成如下几种形式:(1)for(i=1,s=0;i=5;i++)s=s+i;(2)for(i=1;i=5;s=s+i,i++);(3)for(i=1,s=0;i=5;s=s+i,i++);(4)for(s=0;i=5;i++)s=s+i;循环结构程序设计逗号表达式逗号表达式逗号表达式逗号表达式与循环变量无关《C语言程序设计》2.for语句中的三个表达式可以全部或部分省略,但分号“;”不能省。如:⑴i=1;for(;i=5;i++)s=s+i;⑵for(i=1;i=5;)s=s+i++;⑶i=1;for(;i=5;)s=s+i++;⑷for(i=1;;i++)s=s+i;⑸for(;;)…循环结构程序设计省略表达式1省略表达式3省略表达式1、3省略表达式2省略表达式1、2、3相当于常量1,即为“永真”条件相当于while(1)《C语言程序设计》5.5break和continue语句一.break语句语法格式:break;[例5.9]求1+2+3+4+5的和。用break语句解决“永真”循环循环结构程序设计……break……《C语言程序设计》二.continue语句语法格式:continue;[例5.10]输入5个成绩数据求平均成绩。对非法成绩(不在[0,100]之间)数据要求重新输入。循环结构程序设计……continue;……《C语言程序设计》5.6多重循环在一个循环中又包含了另一个循环,称多重循环(也称循环的嵌套)。实现多重循环结构仍使用前面讲的三种循环语句。循环结构程序设计双重循环三重循环单循环双重循环非法《C语言程序设计》[例5.11]用双重循环改写例5.3:求1!+2!+……+5!main(){inti,j,p,s=0;for(i=1;i=5;i++)/*外循环*/{p=1;for(j=1;j=i;j++)/*内循环*/p=p*i;s=s+p;}printf(“Sum=%d\n”,s);}循环结构程序设计《C语言程序设计》[例5.12]打印图示的三角形图案。分析:1.每一行由空格、星号和回车组成。2.它们之间的关系:循环结构程序设计行号空格数星号数123455432113579printf(“*”);for(j=1;j=5;j++)输出1个星号输出5个星号i6-i2*i-1《C语言程序设计》[例5.13]人口增长问题。按年2%的增长速度,现有12亿人,多少年后人口将达到或超过14亿。分析:循环结构程序设计0121年人口212*1.0212*1.02*1.02312*1.02*1.02*1.02mm*1.02mm*1.02mm*1.02mm≥14n,n++y输出n5.7综合应用举例《C语言程序设计》[例5.14]验证素数。分析:素数:是指这个数只能被1和它本身整除。7是素数:它只能被1和7整除;8不是素数:除了1和8之外,还能被其它数(如2)整除。判断m是否为素数,是要验证m是否能被2~m-1之中的一个数n整除即可。若n存在,则m不是素数;否则m为素数。循环结构程序设计《C语言程序设计》[例5.15]打印100~200之间的全部素数,每行10数据。分析:只要把上例中从键盘输入的m由程序产生即可(从100变到200)。每得到一个素数,使一计数器加1。当计数器的值为10的倍数时,输出换行。循环结构程序设计《C语言程序设计》[例5.16]百钱买百鸡:分析:这是一个不定方程。循环结构程序设计(2)1003hens*3cocks*5(1)100chickshenscockschicks鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、母、雏各几何?cockshenschicks1≤cocks≤181≤hens≤321≤chicks≤98112211若成立,得一组解2《C语言程序设计》第5章作业5.1求2+4+6+8+…+50。5.2求自然数e=1+1/2!+1/3!+…1/n!近似值,控制第n项的值大于10-5时进行求和。5.3计算sin(x)=x-x3/3!+x5/5!-x7/7!+…,直到最后一项的绝对值小于10-6时停止计算,x由键盘输入。5.4输入10个数,找出其中的最大值。5.5输入20个数,统计其中正、负和零的个数。5.6输入一行字符,分别统计出其中英文字母、空格、数字字符和其它字符的个数。循环结构程序设计《C语言程序设计》5.7输入30个成绩数据,统计各分数段(0~59、60~69、70~79、80~89、90~100)的人数、最高分、最低分和平均分。5.8求Sa=a+aa+aaa+…+aa…a(其中最后一项有n个a)之值,其中a是一个数字。例如2+22+222+2222+22222(此时n=5),n由键盘输入。5.9输出100~999中能被3整除,且至少有一位数字是5的所有整数。5.10打印所有“水仙花数”。水仙花数是一个三位数,其各位数字立方和等于该数本身。例如153是一水仙花数,因为153=13+53+33。5.11验证在何范围内,勒让德提出的公式:an=n2+n+41是一个计算素数的通项公式。循环结构程序设计《C语言程序设计》5.12分别编写程序,打印以下各图案。5.13搬砖问题:36块砖,36人搬;男搬4、女搬3、两个小孩抬一砖。要求一次全搬完,问男、女、小孩各若干。5.14爱因斯坦的阶梯问题:设有一阶梯,每步跨2阶,最后余1阶;每步跨3阶,最后余2阶;每步跨5阶,最后余4阶;每步跨6阶,最后余5阶;只有每步跨7阶,正好到阶梯顶。问共有多少阶梯。循环结构程序设计《C语言程序设计》5.15换零钱。将一张100元的大钞票,兑换成10元、5元、2元、1元的小钞票。要求每种小钞票至少一张。有多少种兑换方法?如何兑换?5.16印度国王的奖励。相传古代印度国王要褒奖他的聪明能干的宰相达依尔(国际象棋发明者),问他要什么?达依尔回答:“陛下只要在国际象棋棋盘的第一个格子上放一粒麦子,第二格子放二粒麦子,以后每个格子的麦子数都按前一格的两倍计算。如果陛下按此法给我64格的麦子,就感激不尽了。”国王想,“这还不容易!”让人杠了一袋麦子,但很快用光了,再扛一袋还不够,请你为国王算一下共要给达依尔多少小麦?(设1立方米小麦约1.4×10
本文标题:循环结构程序设计1.ppt
链接地址:https://www.777doc.com/doc-5659840 .html