我试图得到数字的平均值,并在用户按-1时退出代码,但它保持无限循环

时间:2014-10-25 23:10:54

标签: c loops average

/ *编写一个程序,允许教师为班级中的每个学生输入百分比标记 教师输入一个负标记表示没有更多的标记要输入 输入所有标记后,程序将显示该类的平均百分比标记 作者:John 26/10/2014 * /

 #include <stdio.h>
 main()
 {
int i;
int b =-2;
float average;
float marks;
printf("Please enter the students mark and enter -1 when finished\n");


while(i!=-1)
{
    scanf("%f",&marks);
    average=(marks+marks)*i;

}//end loop
printf("print %.2f",i);




 }// end main

1 个答案:

答案 0 :(得分:3)

要计算平均值,您需要跟踪运行总和和输入标记的数量。另外,请注意比较浮点值是否相等,因此我会避免使用marks != -1

然后可以将循环修改为:

int i = 0;
float sum = 0;
float average = 0;
float marks = 0;

for (;;)
{
  scanf("%f", &marks);
  if (marks < 0)
  {
    break;
  }
  sum += marks;
  i++;
}
if (i > 0) // avoid division by zero if user enters a negative marks as the first one
{
  average = sum / i;
}