- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第章循环结构程序设计
第5章 循环结构程序设计
5.1 为什么需要循环控制
循环就是重复,编程经常遇到重复的计算:如输入50个学生的成绩、计算50个学生的平均成绩。这些计算的过程、方法基本一致,不同的是数据。使用循环解决。
在C语言中,可以有4种循环:if-goto构成循环、while、do-while、for循环;
5.2 用if-goto构成循环
一般格式:
语句1
标号L:语句2
语句3……
if(条件) 则goto标号L继续执行
其它语句
如,要计算1+2+……+100的和。
第一种形式:
int i,sum;
sum=0;
i=1;
L: sum+=i;
i++;
if(i=100) goto L;
printf(1+2+3+...+100=%d \n,sum);
其程序流程图如右图所示:
第二种形式:
int i,sum;
sum=0;
i=1;
L1: if(i100) goto L2;
sum+=i;
i++;
goto L1;
L2: printf(1+2+3+...+100=%d \n,sum);
该流程图留给大家回去画。
使用if-goto语句,计算
的和。
需要正确处理两个细节:
(1)整数除以整数的问题:1/2得不到0.5,而只能得到0;
(2)符号的问题:可设置一个变量sign,初始值为1,然后在循环中每次让它去乘以-1,这样,sign就会在1和-1之间变化,这正是我们要的。
编程如下:
int i;
double sum=0.0;
int sign=1;
i=1;
L1: sum+=sign*1.0/i; //sign代表符号1和-1,1.0/i后得到double
i++;
sign*=-1; //sign在1和-1之间变化
if(i=100) goto L1;
printf(1/1-1/2+1/3-1/4+……-1/100=%f \n,sum);
goto语句的弊端:如果程序中大量出现goto语句,则程序会变得很难读懂,转来转去,转得程序员头昏。
goto的利:效率特别地高,如一个很深的循环:
while(...)
{
while(...)
{
for(...)
{
if(条件) 则退出所有循环goto L1
}
}
}
L1:.....
所以,要限制使用,除非必要时,不去使用goto,特别是,考试中一般不允许用goto。
5.3 用while语句构成循环
while语句的一般格式:
while( 条件 )
{
//循环体
}
其运行的过程:
1)判断条件是否为非0(满足),如果满足,则进入循环体;如果不满足,则退出循环
,执行while之后的语句
2)执行循环体
3)又回到第1步进行判断
while循环的流程图:
使用while循环实现1+2+3+...+100
int i;
int sum;
sum=0;
i=1;
while(i=100)
{
sum+=i;
i++;
}
printf(1+2+3+...+100=%d \n,sum);
关于while循环,需要说明的几点:
(1)sum和i的初值问题,应该在while之前就进行正确地设定,如上面:sum=0,i=1,如果这两个没有设定,结果:sum和i的值就是不确定的,最后的结果也就是不确定的;
(2)循环体内部必须要i++,不然:i的值永远是1,这样,while(i=100)就永远成立,从而变成一个死循环;
(3)由于循环体内有两条语句,故应该用一对{}括起来,如果忘了这个{},结果:
while(i=100)
sum+=i;
i++;
则i++这条语句并不属于while循环,从而结果也是死循环;
(4)因为while构成的循环,一开始就要进行判断条件是否满足,所以,如果条件一开始就不满足,可能会出现循环次数为0的情况。
(5)while循环比goto循环要容易理解,也容易书写
5.4 用do-while语句构成循环
一般格式:
do
{
//循环体
}while(条件); //特别注意while后面的这个分号
其执行过程:
(1)进入循环体,执行循环体语句
(2)判断while中的条件,如果条件满足,则继续执行上面的第(1)条;如果条件不满足,则退出循环,执行while后面的语句;
显然,do在这里只起一个边界的作用。
关于do-while循环,需要注意的问题:
(1)正确设定初值,如果初值忘了设定,可能结果会出错;
(2)do-while与while循环不同点在于,while可能会一次循环都不会执行(因为while是先判断条件),而do-while至少会执行一次循环;
(3)仍然要注意do-while中的循环条件,如果循环条件没有正确设定,可能也会变成死循环;
关于g
文档评论(0)