第五章 循环结构程序设计.pps

上传人:创****公 文档编号:1593681 上传时间:2019-10-19 格式:PPS 页数:39 大小:874KB
返回 下载 相关 举报
第五章 循环结构程序设计.pps_第1页
第1页 / 共39页
第五章 循环结构程序设计.pps_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《第五章 循环结构程序设计.pps》由会员分享,可在线阅读,更多相关《第五章 循环结构程序设计.pps(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、C程序设计第5章 循环结构,主讲教师: 鲁 萍西安建筑科技大学 理学院,第5章 循环结构程序设计,为什么要用循环结构 ?实现循环结构的语句whiledowhilefor改变循环执行的状态break 语句 continue语句循环结构综合举例,小 结,习 题,游 戏,应 用,1. 例: 求1+2+3+4+100 的累加和 重复:相加2. 一个球从100米高度自由落下,每次落地后反跳回原高度的3/4,再落下,再反弹。求它在第10次落地时,共经过多少米? 重复:计算每次反弹的高度,并累加路径,重复做一件事情,A0501 例1: 求1+2+3+4+100的累加和,循 环 结 构,sum=0sum =

2、sum + 1sum = sum + 2sum = sum + 3sum = sum + 4sum = sum + 5sum = sum + 100,void main() int sum=0, i=1; 当 i=100 时 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. while (表达式

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

4、um + 4sum = sum + 5sum = sum + 100,循环语句:while 和 do 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=1;,sum=0, i=200; sum=0, i=200;,执行100次,sum=5050,执行100次,sum=5050,执行 0 次, sum=0,执行 1 次, sum=200,执行 1 次或多次,执行 0 次或多次,“当”型循环,“直到”型循环,循环语句:while

5、 和 do 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=1;,执行 1 次或多次,执行 0 次或多次,“当”型循环,“直到”型循环,表达式3:循环变量递增,表达式1: 赋初值,循环体语句,假,真,for (i=1; i=100; i=i+1) sum=sum+i; ,假,循环语句: for语句,3. for (表达式1; 表达式2; 表达式3 ) 循环体语句,sum=0;for(i= 1 ;i=100 ; i+ ) s

6、um=sum+i;,例6-1C:求1100的累加,sum=0; i=1; while (i=100) sum=sum+i; i+; ,for和while比较,for语句能够取代while语句,且可读性好尤其适用于:循环次数确定的循环,求100-200之间偶数的累加和,100,200,i+=2,假,课堂练习,分别用for和while语句完成1. 求100-200之间偶数的累加和2. 求 10!,for(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

7、=1; i=10; i+) n=n*i;,i=1; n=1; while (i=10) n*=i; i+; ,100!,double n;,循环结构举例,A0502 一个球从100米高度落下,每次落地后反跳回原高度的3/4,再落下,再反弹。求它在第10次落地时,共经过多少米?,1 2 3 4 . 10,1. 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,对每一个落点: 计算高度并 累加路径长

8、度,循环结构的关键 循环体:重复做的事情 循环条件:做多少次,循环结构举例,A0502一个球从100米高度落下,每次落地后反跳回原高度的3/4,再落下,再反弹。求它在第10次落地时,共经过多少米?,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; ,循环结

9、构举例,A0502一个球从100米高度落下,每次落地后反跳回原高度的3/4,再落下,再反弹。求它在第10次落地时,共经过多少米?,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=a ,while if ( ) . . ,循环应用分析,1.录入50个学生的成绩,计算平均成绩,并显示。 循环累加,已知循环次数,for2.录入50个学生的成绩,统计10090,8980,7970,6960,590各分数段学生的人数,并显示统计结果 循环统计(for) ,嵌

10、套 switch 或 if.else if.else3.对某单位100个人进行年龄统计,35岁以下是“青年”,3555是中年,55以上是“老年”,并显示统计结果 循环for,嵌套ifelse,for / while if ( ) . . ,任 务,A0504 在全系1000学生中进行募捐,当总数达到10万元时结束。统计此时捐款的人数 ,以及 平均每人 捐款的数目。A0505例:求300以内能被17整除的最大的数。,3. 执行过程while(条件) 语句A; break; 语句 B; ,真,语句B,条件,语句A,break,假,结束循环,break语句,至此位置,1格式: break; 2功能:

11、强行结束整个循环,转向执行循环语句的下一条语句。用于循环语句和switch语句中,if (表达式) break;,3. 执行while(条件) 语句A; continue; 语句 B; ,真,语句B,条件,语句A,continue,假,结束循环,至此位置,continue语句,1格式: continue ; 2功能:结束该循环中的本次循环,继续下一轮循环。只能用于循环语句中,3. 执行for(表达式1;表达式2;表达式3) 语句A; continue; 语句 B; ,if (表达式) continue;,A0505例: 求300以内能被17整除的最大的数。,#include void main

12、() int x,k; for(x=300;x=1;x-) if(x%17=0) printf(x=%dn,x);,找到满足条件的最大数,结束循环,break & continue 应用,break;,小 结,循环程序综合举例,A0506 例:近似求PI。 PI/4=1-1/3+1/5-1/7+.,直到某一项绝对值小于10-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=p

13、i*4; printf(PI=%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 ,是素数(

14、2)找到n,满足x%n=0 ,则x不是素数,退出循环( break) 此时 n=A ,循环小结,1.“当”型循环 while (表达式) 循环体语句,2. “直到”型 循环 do 循环体语句 while (表达式);,3. for (表达式1; 表达式2; 表达式3) 循环体语句,循环结构 循环体:重复做的事情 循环条件:做多少次,变量初始化 循环条件 循环变量修改,习题,B0501 :输入一行字符,分别统计其中英文字母,空格,数字和其他字符的个数(回车键作为输入结束标记) B0502 :打印除了7之外的010之间的自然数。B0503(习题5.6): 求1!+ 2!+3!.+20!B0504(

15、习题5.8): 输出所有的“水仙花数”(3位数,其各位数字立方和等于该数本身。153=13+53+33B0505 录入50个学生的成绩,统计10090,8980,7970,6960,590各分数段学生的人数,并显示统计结果。,游戏扩展,A05011 计时程序 计算执行10000000空循环需要的时间。A05012 循环随机算式:每次游戏后询问游戏者是否继续游戏,键入y或Y 则继续游戏,否则退出。C0501猜数游戏:系统产生一个随机数,请游戏者从键盘上输入数据猜想设值的数是什么,告诉用户是猜大了还是小了。5次以内猜对,用户获胜。否则,提示失败信息,并告诉游戏者该数值。(可扩充程序功能,如循环猜数

16、游戏,对游戏进行计时等)C0502 打字练习游戏 随机出现若干个英文字母,游戏者按照顺序键入。 练习结束后给出正确以及错误个数的提示信息,计算正确率,并给出所用时间。,游戏扩展,void main( ) long i = 10000000L; 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 second

17、sn, i,duration ); ,#include#include#include,A0511 计时程序。 执行10000000空循环需要的时间,获取的时间是一个长整形,将毫秒转化成秒 1000,循环结构例题,A0512例: 循环随机算式(扩展A0502):每次随机算式游戏后询问游戏者是否继续游戏,键入y或Y 则继续游戏,否则退出。,#define N 100void main() int a,b,c,score=0,ans; char next; srand(time(0); /设置种子 doa=rand()%N; b=rand()%N; c=a+b;printf(%d+%d=,a,b)

18、; scanf(%d,#include#include#include,猜数游戏:任意设置一个整数,请用户从键盘上输入数据猜想设值的数是什么,告诉用户是猜大了还是小了。5次以内猜对,用户获胜。否则,告诉用户设置的数据是什么。,分析: (1)已知循环次数n =5 for() (2) 每次循环中 接收一个整数, scanf 并判断和已知数的大小关系 if 如果猜中退出循环 break (3)如果5次后没有猜中 n=6 则输出已知数,循环程序分析,循环猜数,循环应用分析,C0502 打字练习游戏 随机出现英文字母,游戏者键入相同字母。 练习结束后给出正确以及错误个数的提示信息,计算正确率,并给出所用时间。,知识点:(1) 随机字母: ASCII码,给定范围的随机数(2) 接收一个字符(3) 统计正确个数: 分支判断,正确则计数增1(4) 下一次接收字母前要清除输入缓存 A0604(5) 循环结构:for,while 均可(6) 系统计时 A0603,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > pptx模板 > 校园应用

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁