《C语言程序设计实用教程》课件第4章 循环结构程序设计.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《C语言程序设计实用教程》课件第4章 循环结构程序设计.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计实用教程 C语言程序设计实用教程课件第4章 循环结构程序设计 语言程序设计 实用教程 课件 循环 结构 程序设计
- 资源描述:
-
1、4.1 用用while语句实现循环语句实现循环4.2 用用do-while语句实现循环语句实现循环4.3 用用for语句实现循环语句实现循环4.4 循环的嵌套循环的嵌套4.5 跳转语句跳转语句:break和和continue语句语句4.6 循环结构程序设计综合举例循环结构程序设计综合举例 第第4章章 循环结构程序设计循环结构程序设计 n循环结构:在循环结构:在一定条件下一定条件下,重复执行某重复执行某段程序段程序的流程结构,被反复执行的程序的流程结构,被反复执行的程序被称为被称为循环体循环体.条件循环体例例如,如,求求1+2+3+100n解题解题分析分析:n这是累加问题这是累加问题:分别将分别
2、将1,2,3,至至100,累加到,累加到sum求和求和变量中变量中n要重复要重复100次加法运算,用循环实现次加法运算,用循环实现n加完前一个数加完前一个数i后,使后,使i加加1可得到后一个数可得到后一个数n具体过程:具体过程:nC语言语言循环语句:循环语句:n while语句语句n do-while语句语句n for语句语句 第第4章章 循环结构程序设计循环结构程序设计 while语句的形式:语句的形式:while(条件条件表达式表达式)语句语句循环体循环体循环循环条件条件4.1 用用while语句实现循环语句实现循环例如:求例如:求1+2+3+100之和。之和。#include void
3、main()int i,sum;sum=0;/累加和变量置累加和变量置0 i=1;/计数器计数器i的初始值为的初始值为1 while(i=100)sum+=i;i+;printf(sum=%dn,sum);sum=5050循环体循环体复合语句复合语句例如:求例如:求1+2+3+100之和。之和。#include void main()int i,sum;sum=0;/累加和变量置累加和变量置0 i=1;/计数器计数器i的初始值为的初始值为1 while(i=100)sum+=i;i+;printf(sum=%dn,sum);循环控制变量循环控制变量i 如果丢掉丢掉 i=i+1,循环永不结束循环
4、永不结束(死循环)(死循环)循环体中一定有改变循环条循环体中一定有改变循环条件的语句件的语句例如:求例如:求1+2+3+100之和。之和。#include void main()int i,sum;sum=0;i=1;while(i=100)sum+=i;i+;printf(sum=%dn,sum);n请思考:请思考:1.例子的累加和算法改为:例子的累加和算法改为:sum=sum+i 但但i从从100 变化到变化到1。则程序应如何修。则程序应如何修改?改?2.求求100以内的奇数(或偶数)以内的奇数(或偶数)之和。上面程序应如何修改?之和。上面程序应如何修改?3.当累加和仍为:当累加和仍为:s
5、um=sum+i (i从从1 到到n),但但n从键盘输入。程序应如从键盘输入。程序应如何修改?当输入何修改?当输入n为为0时,时,循环执行多少次?循环执行多少次?n while语句语句的循环特点:的循环特点:n 先判断条件表达式,后执行循环体语句先判断条件表达式,后执行循环体语句(pre-test loop)while(条件条件表达式表达式)语句语句;4.1 用用while语句实现循环语句实现循环例例4-2 从键盘输入一组学生的成绩,统计这组成从键盘输入一组学生的成绩,统计这组成绩的及格和不及格的人数,以及平均成绩。假设绩的及格和不及格的人数,以及平均成绩。假设这组成绩的结尾标志是这组成绩的结
6、尾标志是-1的数据。的数据。n解题思路:解题思路:n变量分配:变量分配:ninput:存放输入的成绩;存放输入的成绩;npassed:及格人数;及格人数;nfailed:不及格的人数不及格的人数,navg:平均成绩。平均成绩。n解题思路:解题思路:n变量分配:变量分配:ninput:存放输入的成绩;存放输入的成绩;npassed:及格人数,及格人数,failed:不及格的人数不及格的人数,navg:平均成绩。平均成绩。n处理过程:处理过程:#include void main()int input,passed=0,failed=0;double avg=0;scanf(%d,&input);
7、while(input=0)avg+=input;if(input=60)passed+;else failed+;scanf(%d,&input);avg=avg/(passed+failed);printf(passed=%d,failed=%d,average score is%.2fn,passed,failed,avg);do-whiledo-while语句的一般形式语句的一般形式do do 语句语句while(while(条件表达式条件表达式);执行流程执行流程do-whiledo-while语句:语句:post-test looppost-test loop 与与while wh
8、ile 语句的比较:语句的比较:pre-test loop4.2 用用do-while语句实现循环语句实现循环#include void main()int i,sum;sum=0;i=1;do sum+=i;i+;while(i=100);printf(sum=%dn,sum);例例4-3 用用do-while语句求:语句求:1+2+100的和。的和。#include void main()int i,sum;sum=0;i=1;while(i=100)sum+=i;i+;printf(sum=%dn,sum);sum=5050#include void main()int i,sum;su
9、m=0;i=101;do sum+=i;i+;while(i=100);printf(sum=%dn,sum);while语句与语句与 do-while语句比较语句比较do-while语句的循环次数语句的循环次数1while语句的循环次数语句的循环次数0#include void main()int i,sum;sum=0;i=101;while(i=100)sum+=i;i+;printf(sum=%dn,sum);输出:输出:sum=101输出:输出:sum=0例例4-4 输入一个整数,将各位数字反转后输出。输入一个整数,将各位数字反转后输出。n解题思路:依次输出数解题思路:依次输出数n的
10、个位,十位、百位的个位,十位、百位直至直至最高位。采用不断除以最高位。采用不断除以10取余数法,直到商等于取余数法,直到商等于0为为止。由于无论整数止。由于无论整数n是多少位,至少要输出个位数(即是多少位,至少要输出个位数(即使使n=0),因此用),因此用do-while语句循环。语句循环。n处理过程:处理过程:void main()int n;/n存放输入数存放输入数 int rightDigit;/rightDigit存放一位数字存放一位数字printf(输入一个整数:输入一个整数:);scanf(%d,&n);printf(反转序列为:反转序列为:);do rightDigit=n%10
11、;printf(%d,rightDigit);n=n/10;while(n!=0);printf(n);如何生成正着排的数字?语法形式语法形式:for (for (表达式表达式1 1;表达式2;表达式;表达式3)3)语句语句 为为true时执行循环体时执行循环体每次执行完循环体后求解每次执行完循环体后求解.用于改变循环控制变量的值用于改变循环控制变量的值 执行流程:循环前先求解循环前先求解,完成初始化循环变量和其他变量完成初始化循环变量和其他变量例如例如:for(i=1;i=100;i+)sum+=i;for(i=1;i=100;i+)sum+=i;4.3 用用for语句实现循环语句实现循环例
12、例4-5 用用for语句求语句求1+2+n,n从键盘输入。从键盘输入。void main()void main()int i,n,sum;printf(输入输入n?);scanf(%d,&n);sum=0;/累加和变量置累加和变量置0 for(i=1;i=n;i+)sum+=i;printf(sum=%d“,sum);如何求如何求1+3+5+7+.+99=?如何求如何求2+4+6+8+.+100=?for(i=1;i100;i=i+2)for(i=1;i100;i=i+2)for(i=2;i=100;i=i+2)for(i=2;i0;i=i-2)for(i=100;i0;i=i-2)for(i
13、=1;i=100;i+)sum=sum+i;等价于等价于i=1;while(i=100)sum=sum+i;i+;用用for语句语句更更简单、方便简单、方便4.3 用用for语句实现循环语句实现循环n关于关于for语句的几点说明:语句的几点说明:for (for (表达式表达式1 1;表达式2;表达式;表达式3)3)语句;语句;(1)for语句的三个表达式可以为空语句的三个表达式可以为空,但分号一定但分号一定不能省略不能省略.若表达式若表达式2也为空,则表示当前循环也为空,则表示当前循环是一个无限循环,需要在循环体中书写另外的是一个无限循环,需要在循环体中书写另外的跳转语句终止循环。跳转语句终
14、止循环。例如:例如:for(;)语句语句;相当于相当于 while(1)语句语句;for(;i=100;)语句语句;相当于相当于 while(i=100)语句语句;4.3 用用for语句实现循环语句实现循环n关于关于for语句的几点说明:语句的几点说明:(2)在表达式在表达式1和表达式和表达式3的位置上可包含多个的位置上可包含多个语句语句。4.3 用用for语句实现循环语句实现循环sum=0;for(i=1;i=100;i+)sum+=i;for(i=1,sum=0;i=100;i+)sum+=i;i=1;sum=0;for(;i=100;i+)sum+=i;4.3 用用for语句实现循环语句
15、实现循环sum=0;for(i=1;i=100;i+)sum+=i;for(sum=0,i=1;i100;)sum=sum+i;i+;表达式表达式3省掉省掉n关于关于for语句的几点说明:语句的几点说明:(2)在表达式)在表达式1和表达式和表达式3的位置上可包含多个的位置上可包含多个语句。语句。4.3 用用for语句实现循环语句实现循环for(i=1,j=100;i=j;i+,j-)k=i+j;for(i=0;(c=getchar()!=n;i+=c);for(;(c=getchar()!=n;)printf(%c,c);4.3 用用for语句实现循环语句实现循环实现什么功能?例例4-6 输入
16、一个整数输入一个整数n,求出它的所有因子。,求出它的所有因子。n解题思路:解题思路:对对1 n的全部整数的全部整数k判断判断:如果如果n能整除能整除k,则则k是是n的因子的因子 即即n%k=0 (k从从1变化到变化到n)for(k=1;k=n;k+)if(n%k=0)printf(%d ,k);#include void main()int k,n;printf(输入输入n?);scanf(%d,&n);for(k=1;k=n;k+)if(n%k=0)printf(%d ,k);printf(n);输入n?241 2 3 4 6 8 12 24例例4-6 输入一个整数输入一个整数n,求出它的所
17、有因子。,求出它的所有因子。4.4 循环的嵌套循环的嵌套n一个循环体内又包含另一个完整的循环一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。结构,称为循环的嵌套。n内嵌的循环中还可以嵌套循环,这就形内嵌的循环中还可以嵌套循环,这就形成多重循环。成多重循环。n三种循环语句三种循环语句while、do-while和和for可以相互嵌套使用。可以相互嵌套使用。4.4循环的嵌套循环的嵌套int m,p;m=1;do /外层循环外层循环 p=3;while(p 6)/内层循环内层循环 printf(m=%d and p=%dn,m,p);p+;m+;while(m!=3);m=1 and p=3
18、m=1 and p=4m=1 and p=5m=2 and p=3m=2 and p=4m=2 and p=5u内层循环控制变量的赋初值应放在正确位置:内层循环控制变量的赋初值应放在正确位置:通常放在外层循环体内、内层循环之前。通常放在外层循环体内、内层循环之前。4.4循环的嵌套循环的嵌套m=1;p=3;do /外层循环外层循环 while(p 6)/内层循环内层循环 printf(m=%d and p=%dn,m,p);p+;m+;while(m!=3);m=1 and p=3m=1 and p=4m=1 and p=5u内层循环控制变量的赋初值应放在正确位置:内层循环控制变量的赋初值应放在
19、正确位置:这是m=1时的输出结果。m=2时无输出结果例例4-7 打印星星菱型图案。打印星星菱型图案。n解题思路:菱型图案可分为两部分打印:上半部解题思路:菱型图案可分为两部分打印:上半部分(前分(前4行)和下半部分(后行)和下半部分(后3行)。行)。n分析上半部分图案:分析上半部分图案:n第第1行有行有4-1个空格,有个空格,有1(2*1-1)个)个“*”;n第第2行有行有4-2个空格,有个空格,有3(2*2-1)个)个“*”;n类推地,第类推地,第 i 行有行有 4-i 个空格,有个空格,有(2*i-1)个个“*”。void main()int i,j,n;printf(n=);scanf(
20、“%d”,&n);/n为上半部分行数 /画出上半部分图案,for(i=1;i=n;i+)/画第i行 for(j=1;j=n-i;j+)printf();for(j=1;j=1;i-)for(j=1;j=n-i;j+)printf();for(j=1;j=2*i-1;j+)printf(*);printf(n);4.5 跳转语句跳转语句n用于改变控制流的语句:用于改变控制流的语句:ncontinue语句语句nbreak语句语句ngoto 语句语句n用于改变程序控制流用于改变程序控制流:ncontinuecontinue语句语句n用于循环语句中用于循环语句中n提前结束本轮循环提前结束本轮循环nbr
展开阅读全文