本章要点:while,do…while,for三种循环语句
continue和break语句
循环的嵌套
循环结构程序的应用举例
问题描述——统计学生某门课程的平均成绩
每学期期末,通常需要对各门课程的教学情况进行总结。其中,统计课程的平均成绩是考察教学效果的重要评定参数。假设某班40名同学选修了C语言程序设计,要求统计该门课程的平均成绩。
引例分析
要想统计课程的平均成绩,应先求出所有学生的成绩总和,然后用人数去除总成绩可得结果。首先设定变量sum表示总成绩,令其初值为零,即sum=0;定义变量score用来表示某位同学的成绩。
//程序代码
#include<stdio.h>
void main()
{ int i=1,N=40,sum=0; /* 初始化循环控制变量i和累加器sum */
int score; /* 定义存放成绩的变量score */
float avg; /* 定义存放平均成绩的变量avg */
printf("请输入全班人数:");
while(i<=N)
{ scanf("%d",&score); /* 输入第i位同学的成绩 */
sum+=score; /* 实现累加 */
i++; /* 循环控制变量i增1 */
}
avg=(float)sum/N; /* 计算平均值 */
printf("avg=%.2f\n",avg);
}
while语句一般表达式:while (表达式);语句;
流程图:
构成循环的四要素:
循环控制变量初始化,要求进入本循环内完成:
- 计数器,i=1,从第1项开始;
- 累加器,s=0,从第0开始;
- 累乘器,p=1,1乘任何数都保持不变;
- 终止,n=20,20为数列的项数;
表达式:循环控制表达式
情况1:控制次数i<=n;
情况2:最后一项的值小于某精度,如k<1e-6
情况3:无法准确设立条件,可以先设为非0,如1,然后再循环体内利用if结构和break配合完成。
构成循环的四要素
循环处理:
数列累加:s=s+通项,通项一般为数列的通项公式或由用户的输入数据,当然可以是从数据文件中读取的数据库
数列累乘:p=p*通项
其他特殊处理,如利用语句组完成通项的生成。
循环控制变量的处理,使每次循环后,让循环变量趋向退出循环的方向发展
- 取数列的下一项,计数器加1,++i或–i
- 在循环体中设置异常出口,即if与break配合使用,if条件就是所谓的退出循环条件,异常出口可以有多个
题:用while语句求1~100的累加和
#include "stdio.h"
void main()
{
int s=0,i=1;
while(i<=100)
{ s+=i;
i++;}
printf("sum=%d\n",s);
}
求n!,即求n的阶乘,n由键盘输入
#include "stdio.h"
void main()
{
int p=1,n,i=1;
printf("请输入一个通项:");
scanf("%d",&n);
while(i<=n)
{ p=p*i;//
i++;}
printf("n!=%d\n",p);
}
do…while语句:
do…while语句的特点是先执行循环体,然后判断循环条件是否成立。其一般格为:
do
{循环体语句
}while(表达式); /*本行的分号不能缺省*/
其特点是:先执行循环体语句,然后再判断表达式。
用do…while语句实现引例。
#include "stdio.h"
void main()
{
int i=1,sum=0; /* 定义并初始化控制循环变量i和累加器sum */
int score; /* 定义存放成绩的变量score */
float avg; /* 定义存放平均成绩的变量avg */
do
{
scanf("%d",&score); /* 输入第i位同学的成绩 */
sum=sum+score; /* 实现累加 */
i++; /* 循环控制变量i增1 */
}
while(i<=40); /* 循环继续条件i<=40 */
avg=(float)sum/40; /* 计算平均值 */
printf("avg=%.2f\n",avg);
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END