- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 循环控制 一、概述 1.概念循环就是某个操作的反复执行。在许多问题中都需要用到 循环,利用循环,一方面可以降低问题的复杂性,减低程序设 计的难度,减少程序书写输入的工作量;另一方面可以充分发 挥计算机运算速度快、能自动执行程序的优势。 2.循环的方法循环的方法通常有两种:穷举、迭代 (1)穷举对问题的所有可能状态一一测试,直到找到解或将全部可能状态都测试过为止如新生录取工作、搬砖问题等 (2)迭代迭代是一个不断用新值取代变量旧值或由旧值推出变量 新值过程。如人口增长问题、fibonacci数列问题、方程求解问题 3.循环控制循环的执行需要建立在一定的条件上,即循环需要控制循环的控制方法有两种:记数法、标志法 (1)记数法先确定循环的执行次数,然后逐次测试,完成测试次数后循环结束这种方法使用于循环次数已知的循环;通常设置计数器如:1+2+…+100(2)标志法达到某一目标后,使循环结束这种方法使用于循环次数未知的循环;通常设置标志量(1:执行,0:停止)如方程求解问题 4.实现循环的方式(1)goto语句(2)while语句(3)do while语句(4)for语句 二、goto语句 1.goto语句一般格式:goto 语句标号; 功能:无条件转移语句这里的标号起着地址、入口的作用 例1 计算1+2+…+100 程序如下: main() { int i,sum; sum=0;i=1; loop:sum+=i;i++;if(i=100)goto loop; printf(sum=%d\n,sum); } 2.标号说明 (1)不能用整数作标号,需用合法的用户标识符 (2)只能出现在goto所在函数内,且唯一 (3)只能加在可执行语句前面 (4)限制使用goto语句 三、while语句 1.while 语句的使用while语句是用来实现“当型”循环结构的一般形式: while(e)S 执行过程:计算e的值,测试 e是否为真,若是,进入循环体 S,再次测试e,若为真,进入循 环体…重复这样的过程,直到e为假 ,退出循环体S,执行后面的语句 例2 计算1+2+…+100 #include stdio.h main() { int i,sum; sum=0;i=1; while(i=100) { sum+=i;i++; }printf(sum=%d\n,sum); } 2.说明 (1)循环的控制a.记数法注意临界值b.标志法注意表达式的选择 (2)循环体循环体可以是一条语句,也可以是多条语句(注意加{}以形成复合语句) (3)在循环中必须有促使循环停止下来的操作(即使e不成立的操作)(4)while(e);;的出现,语句无语法错误,但此时循环体S不受e的控制(5)无限循环: while(1)S 例3 印数 #include stdio.h main() { int number; number=0; while(number=1) { number++; printf(%d\n,number); }} Res:12 思考题:阅读下面程序,写出运行结果 #include stdio.h main() { int number; number=0;while(number++=1) printf(*%d\n,number); printf(**%d\n,number); } Res: 例4 从键盘输入一个整数,判断其是否为素数。 素数:除1和其本身以外,没有其它因子的自然数 #include stdio.h main() { int n,i; printf(please input n:); scanf(%d,n); i=2;while(i=n/2) if(n%i==0)break;/*提前跳出循环*/ else i++; if(in/2)printf(It is a prime!\n); else printf(It is not a prime!\n); } 例5 求和1-3+5-7+…-99+101 #include stdio.h main() { int sum=0,i,sign; i=1; sign=1; while(i=101) {sum+=i*sign;i+=2; sign=(-1)*sign; } printf(sum=%d\n,sum); } 例6 人口问题 某地区现有人口m人,每年以r%的速度增长。求n年后该地区的人口
文档评论(0)