C语言程序设计45765.ppt

  1. 1、本文档共74页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计 第六章 循环控制 本章主要内容 用goto语句实现循环控制 while循环控制 do-while循环控制 for循环控制 循环结构中的跳转语句 循环的嵌套 循环结构程序设计举例 一、概述 语句一般格式while (表达式) 循环体语句 说明:while语句是C的关键字,其后面的一对括号中的表达式,可以是C语言的任意合法表达式,由它来控制循环体语句是否执行,括号不能省略。循环体语句可以是一条语句,也可以是多条语句,一般来说循环体是一条语句时不用加“{}”,如果是多条语句,就一定要加“{}” 构成复合语句。其中的语句可以是空语句、表达式语句或作为循环体一部分的复合语句 执行过程: (1)计算while后一对括号中的表达式的值。当值为非零时,则执行步骤(2);当值为零时,则执行步骤(3)。 (2)执行循环体语句后,转去执行步骤(1)。 (3)退出while循环。 功能: 计算表达式的值,为非0(逻辑真)时,重复执行内嵌语句,每执行一次,就判断一次表达式的值,直到表达式的值为0 时结束循环,转去执行while后面的语句。 例:编写程序,求100个自然数的和 即: s=1+2+3+ … +100 算法和程序: main( ) /*ex21.cpp*/ { int i,sum; i=1; sum=0; while (i=100){ sum=sum+i;i++;} printf(sum=%d\n,sum); } 思考程序段的输出?main( )   /*ex22.cpp*/ { int i,sum; i=1; sum=0; while (i=100){i++;sum=sum+i;} printf(sum=%d\n,sum); } 运行后,输出: sum=5150 原因是什么? 例:求5! 算法: i=1 to 5 f=f*i i++ 程序如下: main() int i,s; i=1; s=1; while(i=5) { s=s*i; i++; } 上面的程序段实现了本章第一节M!的算法,程序中先判断i是否小于等于5,如果条件成立,则进入循环体,计算i!,将结果赋值给s。然后,以i++将i递增。如此循环,当条件不再成立时(i=6)退出循环,此时得到的s值即为5!。 例:显示1~10的平方 #include stdio.h /*ex24.cpp*/ main() { int i=1;while(i=10){ printf(%d*%d=%d\n,i,i,i*i);i++;} } 例:有一张厚度为0.1毫米的纸,假设它足够大,重复将其对折,问对折多少次之后,其厚度可以抵达珠穆朗玛峰的高度?程序如下: main()/*ex25.cpp*/ { double h=0.1; int n=0; /* n累计对折次数*/ while(h=00) { h=h*2;n=n+1; } printf(“对折次数为:%d,此时厚度: %.2f\n,n-1,h/2); } 重复对折一张纸,实质就是厚度乘以2,次数加1。用顺序结构编程为: h=h*2; n=n+1; 例:用泰勒级数求e的近似值。直到最后一项小于1e-6为止。 e=1+1/1!+1/2!+1/3!+…+1/n!+… #include stdio.hmain(){ float e=1.0; /*e存放结果*/int n=1,t=1;while(1.0/t=1e-6){ t=t*n;/*求n!*/e=e+1.0/t;/* 实现求n!的倒数的和 */n++;}printf(e=%8.6f\n,e);} 运行结果: e=2.718282 求:1-1/3+1/5-1/7+…….直到最后一项的绝对值小于 算法分析:累加过程, while |t|=1E-5 s=s+t flag=-flag tt=tt+2 t=1.0/tt*flag 程序: main() {int s=0,flag=1,tt=1; while(fabs(t)=1E-5) {s=s+1.0/tt*flag; tt=tt+2; flag=-flag; } printf(“%f”,s); }例:用辗转相除法求m和n的最大公约数 main( )/*ex28.cpp*/ { int m,n,r; scanf(%d, %d,m,n); if (mn){ r=m; m=n; n=r; } do{ r=m%n;m=n;n=r;}while(r!=0); printf(%d\n,m); } 思考:最小公倍数的求法? 说明: 所有用 while 语句实现的循环都可以用for 语句实现。 6.表达

文档评论(0)

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

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

1亿VIP精品文档

相关文档