本章要点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条件就是所谓的退出循环条件,异常出口可以有多个
#include "stdio.h"
void main()
{
  int s=0,i=1;
  while(i<=100)
	 { s+=i;
       i++;}
  printf("sum=%d\n",s);
}
#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(表达式); /*本行的分号不能缺省*/

其特点是:先执行循环体语句,然后再判断表达式。

#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);
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注