文档介绍:第五章循环结构程序设计
§ 概述
前面已介绍了顺序结构,选择结构,本章介绍循环结构。
如:
sum=1+2+3+…+100;
实际问题: 一组重复执行的语句。
则用循环结构解决。
C语言用四种形式循环
2. do-while 语句
3. For 语句
4. break、continue和goto语句
1. While 语句
§ while语句
while语句在C语言中用得比较多,它是通过判断循环控制条件是否满足来决定是否继续循环,又称“当型”循环。
形式: while (表达式)
循环体语句
2. 执行过程: 先判断表达式的值。若,否则while执行完毕。
专门的当型循环语句––while语句
3. 流程图:
表达式
语句
0
=0
下一语句
将上述例子用while语句写出
while (i<=100)
{ sum+ =i;
i++;
}
语句中应有使表达式=0的语句。
否则会出现无限循环–––"死"循环。
注: while后面的语句一般为复合语句, 即:加{ }
我们来看下面的例子
写一个程序,输入一个班学生的成绩,求全班的平均成绩。
分析:输入成绩、计算平均成绩都是一个重复性过程,因此可以用循环语句来实现。在这里,我们并不知有多少个学生,也就是说不知循环到底有多少次,但考虑到成绩没有负数,这样就可以把循环条件定为:每当输入的分数大于等于0时就继续输入成绩;输入的分数小于0时就停止输入。
解题步骤如下:
(1)输入一个分数
(2)当“分数>=0”时,做下列工作:
①累计总分;
②人数加一;
③输入下一分数;
(3)重复第(2)步,直到“分数<0”。
程序:
#include <>
main()
{
float score, average=0;
/*average存放平均成绩,初值为0*/
int n=0; /*n用来存放学生数,初值为0*/
scanf(″%f″,&score); /*输入第一个学生的分数*/
while(score>=0)
{
average+=score; /*average先用来放总分*/
n++; /*学生数增一*/
scanf(″%f″,&score);
/*输入下一个学生的分数*/
}
if (n!=0) average=average/n;
/*求平均成绩,average*/
printf(″%″,average);
/*输出平均成绩average,保留两位小数*/
}
在使用while语句的时候,我们要注意以下两个问题:
(1)循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句的形式出现。如果不加花括号,则while语句的范围只到while后面的第一个分号处。比如上例中,while语句中如无花括号,则while语句范围只到“average+=score;”。
(2)在循环体中应有使循环趋向于结束的语句。比如上例中,循环结束的条件是“score>=0”,那么当我们把这个班的成绩全部输入完后,一定要输入一个负数,才能使程序往下执行。
(3)循环体语句有可能一次也不执行。比如说上例中,当第一次输入的分数就为负数时,则循环体一次也不执行。