资源描述:
《C语言程序设计第四版PPT 谭浩强.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第5章循环结构一个电话本程序的主菜单问题:在完成一次操作后,如何重新出现菜单?教材114页,处理成批数据问题。引例:语句组Y循环结构流程条件NN语句组条件Y循环结构的构成循环体——重复执行的操作循环控制条件——重复执行操作的条件或结束重复执行操作的条件需要注意:初始状态,循环条件,每次循环后的变化例1:求while语句表达式假(0)语句真(非0)while(表达式)语句表达式语句N-S图流程图while语句例1:求inti=1,sum=0;while(i<=100){sum=sum+i;/*也可写为sum+=i*/i++;}printf("1+2+...+100=%
2、d",sum);do-while语句假(0)表达式语句真(非0)do语句while(表达式)表达式语句N-S图流程图do-while语句例1:求inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf("1+2+...+100=%%d",sum);例1:求练习1:输入10个数求和练习2:求n!=1*2*…*n计算机最擅长的工作之一:累加求和for语句的基本格式for(表达式1;表达式2;表达式3)语句表达式2假(0)语句真(非0)表达式1表达式3for语句的常用形式for(循环变量赋初值;循环条件;循环变量增值)语
3、句条件假(0)语句真(非0)循环变量=初值循环变量增值for语句例1:求inti,sum=0;for(i=1;i<=100;i++)sum=sum+i;printf("1+2+...+100=%d",sum);for语句例1:求问题的扩展:(1)求1~100间奇数的和(2)任意输入一组10个数,求它们的和(3)任意输入一个正整数n,求1+2+…+n(4)任意输入一个正整数n,求n!for语句例1:求问题的扩展:(1)求1~100间奇数的和inti,sum=0;for(i=1;i<=100;i=i+2)sum=sum+i;printf("1+3+...+99=%d
4、n",sum);inti,sum=0;for(i=1;i<=100;i++)if(i%2==1)sum=sum+i;printf("1+3+...+99=%d",sum);for语句例1:求问题的扩展:(2)任意输入一组10个数,求它们的和inti;floatx,sum=0;for(i=1;i<=5;i++){scanf("%f",&x);sum=sum+x;}printf("sum=%f",sum);for语句例1:求问题的扩展:(3)任意输入一个正整数n,求1+2+…+ninti,n,sum=0;printf("n=");scanf("%d",&n);fo
5、r(i=1;i<=n;i++)sum=sum+i;printf("1+...+%d=%d",n,sum);for语句例1:求问题的扩展:(4)任意输入一个正整数n,求n!inti,n;doublefac=1;printf("n=");scanf("%d",&n);for(i=1;i<=n;i++)fac=fac*i;printf("%d!=%.0f",n,fac);考虑到阶乘值的范围,需要双精度才能够保存。但同时应注意,双精度类型的有效位数是15位,当n值较大时,其计算结果还是有误差的。for语句例2:输入10个成绩,求最大值。inti,x,max;max=0
6、;for(i=1;i<=10;i++){scanf("%d",&x);if(x>max)max=x;}printf("max=%d",max);考虑:求最小值for语句例2:输入10个成绩,求最大值。#include#include#includeintmain(){inti,x,max;srand((unsigned)time(NULL));max=0;for(i=1;i<=10;i++){//scanf("%d",&x);x=rand()%101;//产生0-100的随机数printf("%d",x);
7、if(x>max)max=x;}printf("max=%d",max);return0;}为方便调试程序,引入随机函数,减少输入数据的繁琐。参见补充阅读材料。循环嵌套例3:显示1!,2!,...,10!inti,n,fac;for(n=1;n<=10;n++){fac=1;for(i=1;i<=n;i++)fac=fac*i;printf("%d!=%ld",n,fac);}循环嵌套例4:求inti,n,fac,sum=0;for(n=1;n<=10;n++){fac=1;for(i=1;i<=n;i++)fac=fac*i;sum=sum