第6章 循环结构.pptx

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 循环结构;6.1 概述 ;6.2 while语句 ;2.举例应用;加数使用,也作为循环变量,其取值范围是1到100。对于每个i值,要进行一次sum=sum+i的计算。如,当i=1时,sum=0+1=1;当i=2时,sum=1+2=3;当i=3时,sum=3+3=5;……依此类推下去,就可以得到结果sum 。;例 6.2 将输入的一串字符显示在屏幕上,遇到字符“$”时停止。 ;6.3 do while语句 ;个;的语句)或复合语句,如果是复合语句,则必须括在{}之中。 3) do-while作为一个语句,必须以分号(;)结束,所以在while(表达式)后一定要有分号。 (2)、执行顺序: 执行“循环体语句”,计算表达式的值,如果表达式的值非零(真),继续执行“循环体语句”,直到表达式的值为零(假),循环结束。程序结构流程图如图 : ;例 6.3 用do while语句求s=1+2+3+....+100 ;例 6.4 计算sin(x)= ,直到最后一项的绝对值小10-7。;scanf(%lf,x); t=x; n=1; s=x; do { n=n+2; t=t*(-x*x)/((n-1)*n); s=s+t; } while (fabs(t)=1e-7); printf(sin(%lf)=%lf,x,s); } 运行结果如下: please input x:1.5753 sin(1.575300)=0.999990;2. do while与while语句的区别 ;putchar(c=getchar()); } while (c!=$); } 但是,若将上例的do while语句写成: do putchar(c=getchar()); while (c!=$); 容易产生歧义和误解。 ;例6.5 求平均值的错误程序。 #include stdio.h void main() { int sum,i,a; sum=0; i=0; do { scanf(%d,a); sum=sum+a; i++; } while (a!=-1); printf(aver=%f\n,1.0*sum/i); } ;6.4 for 语句;例 6.6 用for语句求s=1+2+3+....+n ;for 循环使用说明:;如:for(i=1,sum=0;i=100;sum+=i,i++) ; (3)表达式2一般是关系表达式(如i=100)或逻辑表达式(如ab xy),但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。 如:for(i=0;(c=getchar())!=\n;i+=c); 在表达式2中先从终端接收一个字符赋给c,然后判断此赋值表达式的值是否不等于‘\n’(回车换行符),如果不等于‘\n’,就执行循环体。 又如:for( ;(c=getchar())!=\n;) printf(%c,c); 只有表达式2,而无表达式1和表达式3。其作用是每读入一个字符后立即输出该字符,直到输入一个“换行”为止。 ;例 6.8 求Fibonacci数列的前40个数。该数列的生成方法为:F1=1,F2=1,Fn=Fn-1+Fn-2(n=3),即从第3个数开始,每个数等于前2个数之和。这是一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?;程序流程如图 :;例 6.9求s=aa…aa-a…a-…-aa-a,即第一项由n个a组成,第二项由n-1个a组成,依次类推,最后一项为a,a为1~9的任一数。例如:当n=4,a=2,则表达式:s=2222-222-22-2。 ;源代码如下:;6.5 循环嵌套 ;例 6.10输出10~100之间的全部素数。 ;源程序如下: #include stdio.h #include math.h void main() {int i=11, j, counter=0,k,flag; for( ; i=100; i+=2) { k=sqrt(i);flag=1; for(j=2; j=kflag; j++) if(i%j= =0) flag=0; if(counter%10= =0) printf(“\n”); if( flag ) { printf(“%

文档评论(0)

tianebandeyazi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档