首页 > 解决方案 > 开发一个班级平均程序,每次程序运行时将处理任意数量的成绩

问题描述

#include <stdio.h>
#include <stdlib.h>

int main()
{
int grade,count,sum,average;
grade=0;
count=0;
sum=0;
while(grade!=-1)
{
printf("enter grade=");
scanf("%d",&grade);
sum=grade+sum;
count=count++;
}
average=sum/count;
printf("the average is=%d",average);
return 0;
}

这是问题和输出!!! 我有一个作业要做这个练习,我写了它,但我不知道哪里错了,所以请大家帮忙!谢谢

标签: cloopswhile-loop

解决方案


代码中有一些有问题的行需要修复。

count=count++;

正如 Eugene 的评论所指出的,count++ 类似于 count = count + 1。这一行应该只是其中之一。将“count = count++”视为“count = count = count + 1”,这是一种非常奇怪的增量格式化方式。这条线应该只是count++;

average=sum/count;

这条线正在进行整数除法,您的问题正在寻找浮点答案。您可以通过将这两个整数乘以 1.0(浮点值)来强制执行浮点除法。它应该如下所示:

average = 1.0 * sum / count;

最后,无论输入什么,您的循环每次都会增加计数器,并将其添加到总和中。当输入 -1 时,它将增加计数并在 while 循环结束之前将其添加到总和中。您可以将这些操作放入一个简单的 if 语句中,以确保考虑到这一点:

printf("enter grade=");
scanf("%d",&grade);
if (grade >= 0) {
    sum=grade+sum;
    count++;
}

希望这会有所帮助!

注意:这里不考虑-1之前没有输入数字的情况,这个留给大家玩,有问题可以回这个问题


推荐阅读