- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第5章 循环结构程序设计循环的概念循环结构用于处理需要多次执行的操作,也就是某一段程序会重复执行多次。要构成一个有效的循环,应该指定两个条件:需要重复执行的操作,称为循环体;循环结束的条件。说明:计算机应该只处理有限次的循环,无限次循环的程序是永远执行不完的,称为死循环,一般来说这是不允许的。用while语句实现循环格式:while(表达式){ 执行语句1; 执行语句2; … 执行语句n;}特点:先判断,后执行,条件不满足,循环体一次都不执行【例5.1】求1+2+3…+100的值分析:需要一个整型变量来存部分和,需要int还是long类型?需要一个变量来指示加到哪一个数了,这个变量的取值范围应该是1~100;最后把和显示出来。#includestdio.hvoidmain(){ intsum=0,i=1; while(i=100) { sum=sum+i;i=i+1; } printf(sum=%d\n,sum);}问题:为什么要设置sum和i的初值?i=i+1;有什么作用?大括号起到什么作用?如果没有会怎么样?用do…while语句实现循环格式:do{ 执行语句1; 执行语句2; … 执行语句n;}while(表达式);特点:先执行,后判断,就算条件不满足也执行一次循环体将【例5.1】改用do…while语句来实现#includestdio.hvoidmain(){ intsum=0,i=1; do { sum=sum+i; i=i+1; }while(i=100); printf(sum=%d\n,sum);}while和do…while循环比较从两个程序可以看出,只需要把while语句的循环条件放到循环体后面,再加上分号,在循环体前加上do就可以了。但是要注意,由于do…while语句是先执行一次,再判断要不要继续执行循环体。如果原来while结构的程序,循环一次都不执行,那么这样的转换是错误的。例如,while结构中,设置初值i=101,运行结果将会输出0;do…while结构中,运行结果将会输出101,为什么?while循环程序举例【例5.4】已知计算的值,要求计算到某一项的绝对值小于10-6为止。分析:先设置一个double类型的变量sum存储部分和;每个项是正负交替,需要一个变量作为符号标志,取值为-1和1来回变化;另外分母是不断变化的,也需要一个int类型的变量记录分母,程序如下:#includestdio.h#includemath.hmain(){intflag=1;intdiv=1;doubleterm=1.0;double sum=0.0;while(fabs(term)1e-6){term=flag*(1.0/div); sum+=term;div+=2;flag=-flag;} printf(pi=%f\n,sum*4);}说明:fabs是求浮点数绝对值的函数,得到的结果为double型。数学函数参看附录E。10-6用于确定计算的精度,10-6不能取得太小,否则循环的次数会大幅度增加,造成程序运行时间过长。例如取10-10将会使得计算时间超过1分钟。用for语句实现循环结构:for(表达式1;表达式2;表达式3){ 可执行语句;}作用:先求解表达式1;判断表达式2是否为真,真则执行{}里面的内容(循环体),否则整个for语句执行完毕;求解表达式3,再执行第2步。特点:结构紧凑,把循环变量赋初值、循环条件、循环变量增值合在一起等价于以下形式:表达式1;while(表达式2){ 可执行语句; 表达式3;}for语句的各种形式一般来说,表达式1用于给循环变量赋初值,如果不需要赋初值,或者在前面已经赋初值了,就可以省略,变成for(;表达式2;表达式3)的形式;表达式3一般是循环变量增值,用于控制循环的结束,表达式3可以放在循环体里面最后一句,变为for(表达式1;表达式2;){ 可执行语句; 表达式3;}表达式2是循环判断,如果省略,循环将会无限循环,但是也可以把表达式2放在循环体里面,变为for(表达式1;;表达式3){ if(!表达式2) break; 可执行语句;}if(!表达式2)break;的作用是,如果“表达式2”的值为假,那么“!表达式
文档评论(0)