C程序设计第5章循环结构PPT课件_第1页
C程序设计第5章循环结构PPT课件_第2页
C程序设计第5章循环结构PPT课件_第3页
C程序设计第5章循环结构PPT课件_第4页
C程序设计第5章循环结构PPT课件_第5页
已阅读5页,还剩34页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C程序设计程序设计第第5章章 循环结构循环结构主讲教师: 鲁 萍西安建筑科技大学 理学院第第5章章 循环结构程序设计循环结构程序设计n为什么要用循环结构 ?n实现循环结构的语句nwhilendowhilenforn改变循环执行的状态nbreak 语句 ncontinue语句n循环结构综合举例小小 结结习习 题题游游 戏戏应应 用用1. 1. 例例: : 求求1+2+3+4+1+2+3+4+100 +100 的累加和的累加和 重复:相加重复:相加2. 2. 一个球从一个球从100100米高度自由落下,每次落地后反跳回原米高度自由落下,每次落地后反跳回原高度的高度的3/43/4,再落下,再反弹。求

2、它在第,再落下,再反弹。求它在第1010次落地时,次落地时,共经过多少米?共经过多少米? 重复:计算每次反弹的高度,并累加路径重复:计算每次反弹的高度,并累加路径重复做一件事情重复做一件事情循循 环环1001 2 3 4 10A0501 A0501 例例1: 1: 求求1+2+3+4+1+2+3+4+100+100的累加和的累加和循循 环环 结结 构构sum=0sum = sum + 1sum = sum + 2sum = sum + 3sum = sum + 4sum = sum + 5sum = sum + 100void main() int sum=0, i=1; 当当 i=100 时

3、时 sum=sum+i; i=i+1; printf(“sum=%dn”,sum); while( i=100 ) 循环体循环体循环条件循环条件(修改循环变量修改循环变量)循环结构的关键循环结构的关键void main() int sum=0, i=1; while( i=100 ) sum = sum + i ; i = i + 1; printf(“sum=%dn”,sum); 真真假假真真循环体语句循环体语句表达式表达式假假1 1. while (. while (表达式)表达式) 循环体语句循环体语句 当当 表达式为真时重复执行语句;为假时循环结束。表达式为真时重复执行语句;为假时循环

4、结束。 循环语句:while例例1B: 1B: 求求1+2+3+1+2+3+100+100的累加和的累加和void main() int i=1,sum=0; do sum = sum + i; i = i+1; 直到直到(i=100)(i=100)不成立不成立 printf(“sum=%dn”,sum); 循环语句:循环语句:do whiledo while真真假假真真表达式表达式 循环体语句循环体语句假假循环体循环体(修改循环变量修改循环变量)2. do2. do 循环体语句循环体语句 while ( while (表达式)表达式);重复执行循环体语句,重复执行循环体语句,直到直到表达式为

5、假。表达式为假。while(i=100);sum=0sum = sum + 1sum = sum + 2sum = sum + 3sum = sum + 4sum = sum + 5sum = sum + 100循环条件循环条件循环语句循环语句: :while while 和和 do whiledo while while( i=100 ) sum = sum + i ; i = i + 1; do sum = sum + i; i = i+1; while(i=100); 真真表达式表达式假假循环体语句循环体语句真真表达式表达式假假循环体语句循环体语句sum=0, i=1; sum=0, i

6、=1;sum=0, i=200; sum=0, i=200;执行执行100次次,sum=5050执行执行100次次,sum=5050执行执行 0 次次, sum=0执行执行 1 次次, sum=200执行执行 1 次次或多次或多次执行执行 0 次次或多次或多次“当当”型循环型循环“直到直到”型循型循环环循环语句循环语句: :while while 和和 do whiledo while while( i=100 ) sum = sum + i ; i = i + 1; do sum = sum + i; i = i+1; while(i=100); 真真表达式表达式假假循环体语句循环体语句真真

7、表达式表达式假假循环体语句循环体语句sum=0, i=1; sum=0, i=1;执行执行 1 次次或多次或多次执行执行 0 次次或多次或多次“当当”型循环型循环“直到直到”型循型循环环表达式表达式3:循环变量递增循环变量递增表达式表达式1: 赋初值赋初值循环体语句循环体语句假假真真for (i=1; i=100; i=i+1) sum=sum+i; 真真假假循环语句:循环语句: for语句语句3. for (表达式表达式1; 表达式表达式2; 表达式表达式3 ) 循环体语句循环体语句条件表达式条件表达式2变量初始化变量初始化循环条件循环条件 循环变量修改循环变量修改循环体循环体sum=0;f

8、or(i= 1 ;i=100 ; i+ ) sum=sum+i; 例例6-1C:求:求1100的累加的累加 sum=0; i=1; while (i=100) sum=sum+i; i+; 表达式表达式1 1表达式表达式3 3表达式表达式2for和和while比较比较循环体循环体for语句能够取代语句能够取代while语句,且可读性好语句,且可读性好尤其适用于:循环次数确定的循环尤其适用于:循环次数确定的循环求求100-200之间偶数的累加和之间偶数的累加和100200 i+=2真真假假课堂练习课堂练习分别用for和while语句完成1. 求100-200之间偶数的累加和2. 求 10!for

9、(i=100,sum=0; i=200; i+=2) sum=sum+i; i=100; sum=0; while (i=200) sum=sum+i; i+=2; int n;for(i=1,n=1; i=10; i+) n=n*i; i=1; n=1; while (i=10) n*=i; i+; 100!double n;循环结构举例循环结构举例A0502 一个球从一个球从100100米高度落下,每次落地后反跳回米高度落下,每次落地后反跳回原高度的原高度的3/43/4,再落下,再反弹。求它在第,再落下,再反弹。求它在第1010次落地时,次落地时,共经过多少米?共经过多少米?1 2 3 4

10、 . 101. h=100 sum = sum + h2. h=h*3/4 sum = sum + 2*h3. h=h*3/4 sum = sum + 2*h4. h=h*3/4 sum = sum + 2*h 10. h=h*3/4 sum = sum + 2*h 100米米对每一个落点:对每一个落点: 计算高度并计算高度并 累加路径长度累加路径长度循环结构的关键循环结构的关键 循环体:循环体:重复做的事情重复做的事情 循环条件:循环条件:做多少次做多少次循环结构举例循环结构举例A0502一个球从一个球从100100米高度落下,每次落地后反跳回原米高度落下,每次落地后反跳回原高度的高度的3/

11、43/4,再落下,再反弹。求它在第,再落下,再反弹。求它在第1010次落地时,次落地时,共经过多少米?共经过多少米?sum=01. h=100 sum = sum + h2. h=h*3/4 sum = sum + 2*h3. h=h*3/4 sum = sum + 2*h4. h=h*3/4 sum = sum + 2*h 10. h=h*3/4 sum = sum + 2*h sum=0; h=100; sum=sum+h for(i=2;i=10;i+) h=h*3/4; sum=sum+2*h; 循环结构举例循环结构举例A0502一个球从一个球从100100米高度落下,每次落地后反跳回

12、原米高度落下,每次落地后反跳回原高度的高度的3/43/4,再落下,再反弹。求它在第,再落下,再反弹。求它在第1010次落地时,次落地时,共经过多少米?共经过多少米?i=2;while(i=10) h=h*3/4; sum=sum+2*h; i+; i=2;do h=h*3/4; sum=sum+2*h; i+; while(i=10)for(i=2;i=10;i+) h=h*3/4; sum=sum+2*h; A0503A0503 例:输入一行字符,统计输入字符的个数例:输入一行字符,统计输入字符的个数 (以回车键(以回车键 n作为输入结束标记)作为输入结束标记)输入字符输入字符 chch,n

13、um=num+1输入字符输入字符 chch,num=num+1 输入字符输入字符 ch,num=num+1直到直到 输入回车键输入回车键( (nn) )循环结构例题循环结构例题循环结构的关键循环结构的关键 循环体:循环体:重复做的事情重复做的事情 循环条件:循环条件:做多少次做多少次num=0;do ch=getchar(); num=num+1; while(ch!=n) num=num-1;输入:输入:hello num:5 6循环次数不确定!循环次数不确定!循环条件:循环条件:ch!=n循环体循环体#include void main() char ch; int num=0; ch=g

14、etchar(); while(ch!=n) num+; ch=getchar(); printf(num=%dn,num); A0503例:输入一行字符,统计输入字符的个数例:输入一行字符,统计输入字符的个数 (以回车键作为输入结束标记)(以回车键作为输入结束标记)ch!=n再次输入字符再次输入字符chnum=0num=num+1结束开始输入字符输入字符ch输出输出num真真假假循环结构例题循环结构例题do ch= getchar(); num+; while(ch!=n); while(ch=getchar()!=n) num+; B0501B0501例:例:输入一行字符,分别统计其中英输

15、入一行字符,分别统计其中英文字母,空格,数字和其他字符的个数文字母,空格,数字和其他字符的个数(以回车键作为输入结束标记)(以回车键作为输入结束标记)分析:字符变量分析:字符变量c c:接收键盘输入字符:接收键盘输入字符整形变量:整形变量:zimu_num,kong_numzimu_num,kong_num,shuzi_numshuzi_num,other_numother_num如果如果chch是英文字母:是英文字母:zimu_numzimu_num+如果如果chch是空格:是空格:kongge_numkongge_num+如果如果chch是数字:是数字:shuzi_numshuzi_num

16、+如果如果chch是其他字符:是其他字符:other_numother_num+循环标记:循环标记:c!=nc!=nch!=n再次输入字符再次输入字符chnum=0num=num+1结束开始输入字符输入字符ch输出输出num真真假假循环结构例题循环结构例题#include void main() char ch; int num=0; ch=getchar(); while(ch!=n) num+; ch=getchar(); printf(num=%dn,num); 循环结构例题循环结构例题 B0503例:例:输入一行字符,分别统计其中英文字母,空格,数输入一行字符,分别统计其中英文字母,空

17、格,数字和其他字符的个数字和其他字符的个数 (以回车键作为输入结束标记)(以回车键作为输入结束标记)int zimu_num=0, kong_num=0;int shuzi_num=0, other_num=0;if(ch=a & ch= A & ch=0 & ch=9) shuzi_num+;else other_num+;while if ( ) . . 循环应用分析循环应用分析1.录入录入5050个学生的成绩个学生的成绩,计算平均成绩,并显示。 循环累加,已知循环次数,循环累加,已知循环次数,forfor2.2.录入录入5050个学生的成绩,统计个学生的成绩,统计

18、1009010090,89808980,79707970,69606960,590590各分数段学生的人数,并显示统计结果各分数段学生的人数,并显示统计结果 循环统计(循环统计(forfor) ,嵌套,嵌套 switch switch 或或 if.elseif.else if.elseif.else3.3.对某单位对某单位100100个人进行年龄统计,个人进行年龄统计,3535岁以下是岁以下是“青年青年”,35553555是中年,是中年,5555以上是以上是“老年老年”,并显示统计结果,并显示统计结果 循环循环forfor,嵌套,嵌套ifelseifelsefor / while if ( )

19、 . . 任任 务务A0504 在全系在全系1000学生中进行募捐,当总数达到学生中进行募捐,当总数达到10万元时结束。统计此时捐款的人数万元时结束。统计此时捐款的人数 ,以及,以及 平均每人平均每人 捐款的数目。捐款的数目。A0505例:求例:求300以内能被以内能被17整除的整除的最大最大的数。的数。3. 3. 执行过程执行过程while(while(条件条件) ) 语句语句A;A; break;break; 语句语句 B; B; 真真语句语句B条件条件语句语句Abreak假假结束循环结束循环break语句语句至此位置至此位置1 1格式:格式: breakbreak; 2 2功能功能:强行

20、结束整个循环,:强行结束整个循环,转向执行循环语句的下一条语句。转向执行循环语句的下一条语句。用于用于循环语句和循环语句和switch语句中语句中if (if (表达式表达式) break) break;3. 3. 执行执行while(while(条件条件) ) 语句语句A;A; continue;continue; 语句语句 B; B; 真真语句语句B条件条件语句语句Acontinue假假结束循环结束循环至此位置至此位置continue语句语句1 1格式:格式: continuecontinue ; 2 2功能功能:结束该循环中的本结束该循环中的本次循环,继续下一轮循环。次循环,继续下一轮循

21、环。只能用于循环语句中只能用于循环语句中3. 3. 执行执行for(for(表达式表达式1 1;表达式;表达式2 2;表达式;表达式3 3) 语句语句A;A; continue;continue; 语句语句 B; B; if (if (表达式表达式) continue) continue;A0505例例: 求求300300以内能被以内能被1717整除的整除的最大最大的数。的数。#include void main() int x,k; for(x=300;x=1;x-) if(x%17=0) printf(x=%dn,x); 找到满足条件的最找到满足条件的最大数,结束循环大数,结束循环brea

22、k & continue 应用应用break;小小 结结循环程序综合举例循环程序综合举例A0506A0506 例:近似求例:近似求PIPI。 PI/4=1-1/3+1/5-1/7+.,PI/4=1-1/3+1/5-1/7+.,直到某一直到某一项绝对值小于项绝对值小于1010-6-6为止。为止。void main() int s; double n,t,pi; / s:分子,n:分母,t:分式,pi:累加和 t=1; pi=0; n=1.0; s=1; while(fabs(t)1e-8) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(PI=%

23、15.10fn,pi); 斐波那契数列问题:已知一对幼兔一个月长成成年兔子,一对成年兔子在一月内生出一对幼兔。如果有一对幼兔,问一年后共有多少对兔子?如果设F(n)为该数列的第n项 F(0) = 0,F(1)=F(2)=1,F(n)=F(n-1)+F(n-2) (n3)显然这是一个线性递推数列1、1、2、3、5、8、13、21、34、55、 循环程序设计举例循环程序设计举例A0507 例: Fibonacci数列。void main() long int f1,f2; int i; f1=1;f2=1; for(i=0;i sqrt(x) 没有没有n满足满足x%n=0 ,是素数,是素数(2)找

24、到)找到n,满足,满足x%n=0 ,则,则x不是不是素数,退出循环素数,退出循环( break) 此时此时 n=sqrt(x) 键盘输入键盘输入xn=2n sqrt(x)x是素数是素数真真假假#include void main() int x,n; scanf(%d,&x); for(n=2;nsqrt(x) printf( %d is a prime ,x); else printf( %d is not a prime ,x); 循环结构例题循环结构例题A0508例:键盘输入一个正整数,判断是否为素数例:键盘输入一个正整数,判断是否为素数有因子不有因子不再判断再判断在判断范围内无

25、因在判断范围内无因子,程序正常终止子,程序正常终止有因子,程序有因子,程序 非正常终止非正常终止 键盘输入键盘输入xn=2n sqrt(x)x是素数是素数真真假假循环嵌套循环嵌套A0509A0509例:输出例:输出100100以内的素数以内的素数#include void main() int n,x; for(x=2;x=100;x+) for(n=2;nsqrt(x) printf(“% d ,x); 分析:分析:for( x=2100) for( n=2 sqrt(x) if x%n=0? 判素数判素数内循环内循环breakbreak和和continuecontinue只影响其所在只影响

26、其所在的循环,与外层循环无关的循环,与外层循环无关4d外循环外循环真真真真外循环初始条件外循环初始条件内循环初始条件内循环初始条件内循环体内循环体外循环条件外循环条件假假内循环条内循环条件件假假外循环体外循环体循环结束循环结束for( .) . while(.) . .内循环内循环外循环外循环嵌套循环嵌套循环循环程序设计举例循环程序设计举例A0510例:译密码。按照如下方式将英文字符加密例:译密码。按照如下方式将英文字符加密6566 87 88 89 90A B C D E F G H I W X Y Z a b c d e x y zE F G H I J K L M A B C D e f

27、 g h i a b c分析:分析:(1)1)对每个英文字符对每个英文字符c c用其后第用其后第4 4个字符替代个字符替代 c=c+4c=c+4注意:右边界注意:右边界 WXYZ +4 WXYZ +4 不在是英文字符,特殊处理不在是英文字符,特殊处理c=c-26c=c-26 (2) (2)非英文字符不变非英文字符不变9191循环程序设计举例循环程序设计举例A0510例:译密码。按照如下方式将英文字符加密例:译密码。按照如下方式将英文字符加密#includevoid main() char c; while(c=getchar()!=n) /* 输入字符并判断是否回车输入字符并判断是否回车*/

28、if(c=A & c=a & cZ & cz) c=c-26; /* 是否出界是否出界*/ putchar(c); /* 输出加密后字符输出加密后字符*/ printf(n); 循环小结循环小结1 1.“.“当当”型循环型循环 while ( while (表达式)表达式) 循环体循环体语句语句 2. “直到直到”型型 循环循环 do 循环体语句循环体语句 while (表达式);表达式);3. for (表达式表达式1; 表达式表达式2; 表达式表达式3) 循环体语句循环体语句重复做一件事情重复做一件事情循环结构循环结构 循环体:循环体:重复做的事情重复做的事情 循环

29、条件:循环条件:做多少次做多少次变量初始化变量初始化 循环条件循环条件 循环变量修改循环变量修改习题习题B0501 :输入一行字符,分别统计其中英文字母,空格,数字和其他字符的个数(回车键作为输入结束标记) B0502 :打印除了7之外的010之间的自然数。B0503(习题5.6): 求1!+ 2!+3!.+20!B0504(习题5.8): 输出所有的“水仙花数”(3位数,其各位数字立方和等于该数本身。153=13+53+33B0505 录入50个学生的成绩,统计10090,8980,7970,6960,590各分数段学生的人数,并显示统计结果。游戏扩展游戏扩展A05011 计时程序 计算执行

30、10000000空循环需要的时间。A05012 循环随机算式:每次游戏后询问游戏者是否继续游戏,键入y或Y 则继续游戏,否则退出。C0501猜数游戏猜数游戏:系统产生一个随机数,请游戏者从键盘上输入数据猜想设值的数是什么,告诉用户是猜大了还是小了。5次以内猜对,用户获胜。否则,提示失败信息,并告诉游戏者该数值。(可扩充程序功能,如循环猜数游戏,对游戏进行计时等)C0502 打字练习游戏打字练习游戏 随机出现若干个英文字母,游戏者按照顺序键入。 练习结束后给出正确以及错误个数的提示信息,计算正确率,并给出所用时间。游戏扩展游戏扩展 void main( ) long i = 10000000L;

31、 clock_t start, finish; double duration; start = clock(); while( i- ) ; finish = clock(); duration = (double)(finish - start) / CLOCKS_PER_SEC; printf(%ld empty loops is %f secondsn, i,duration ); #include#include#includeA0511A0511 计时程序。计时程序。 执行执行1000000010000000空循环需要的时间空循环需要的时间获取的时间是一个长整形获取的时间是一个长整形将毫秒转化成秒将毫秒转化成秒 1000循环结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论