gpt4 book ai didi

c - 计算未知数量输入的平均值

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:42 25 4
gpt4 key购买 nike

我需要编写一个 C 程序,使用函数计算用户输入的成绩的平均值。输入的成绩数量未知,因此我必须使用标记值 -1。

这是我的代码,它编译得很好,但是它没有告诉我平均值,而且 for 循环没有调用该函数四次。我错过了什么?

 #include <stdio.h>

float calculateAverage (int sumofGrades, int numberofGrades);

int main(void) {

int i;
int sumofGrades = 0;
int numberofGrades = 0;
int grade = 0;
float average;

for (i = 1; i <= 4; ++i) {

calculateAverage(sumofGrades, numberofGrades);

}
return 0;
}

float calculateAverage (int sumofGrades, int numberofGrades) {

float average;
int grade;

printf("Enter grades and -1 to stop: ");
scanf("%d", &grade);
while (grade <= 100 && grade != -1) {
numberofGrades++;
sumofGrades += grade;
average = sumofGrades / numberofGrades;

}
printf("The average is %.2f", average);

return average;

}

更新

感谢您的帮助!但我还不能把它弄好。对于作业,我需要程序要求我输入未知数量的成绩 4 次,每次计算平均值。

此外,为什么在我输入 -1 后它不停止并给出平均值?

#include <stdio.h>

float calculateAverage(int sumofGrades, int numberofGrades);

int main(void) {
int i;
int sumofGrades = 0;
int numberofGrades = 0;

for (i = 1; i <= 4; ++i) {
calculateAverage(sumofGrades, numberofGrades);
}
return 0;
}

float calculateAverage (int sumofGrades, int numberofGrades) {

float average;
int grade = 0;

while (grade != -1 && grade >= 0 && grade <= 100) {
printf("Enter grades and type -1 to stop: ");
scanf("%d", &grade);

if (grade != -1) {
numberofGrades++;
sumofGrades += grade;
}
}

average = sumofGrades / numberofGrades;
printf("The average is %.2f\n", average);

return average;
}

更新

我还有问题!我无法让程序要求我输入四次成绩并每次计算平均值!我试了又试,结果太令人沮丧了!!我做错了什么??

最佳答案

一旦您输入了一个有效成绩,您的代码就不会尝试读取另一个成绩:

printf("Enter grades and -1 to stop: ");
scanf("%d", &grade);
while (grade <= 100 && grade != -1) {
numberofGrades++;
sumofGrades += grade;
average = sumofGrades / numberofGrades;
}

如果成绩有效,则进入无限循环。它还会计算每个周期的平均成绩,这是不必要的。在循环之后,一次就足够了。

也许你应该使用:

printf("Enter grades and -1 to stop: ");
while (scanf("%d", &grade) == 1 && grade <= 100 && grade >= 0)
{
numberofGrades++;
sumofGrades += grade;
}
if (numberofGrades == 0)
{
fprintf(stderr, "Error: zero valid grades entered\n");
average = 0.0;
}
else
{
average = sumofGrades / numberofGrades;
printf("The average is %.2f", average);
}
return average;

请注意,这会在使用成绩前检查输入是否成功。

您也确实不需要将变量传递给函数。您最好让函数不接受任何参数,并将参数作为常规局部变量正确初始化为零。

您的主程序应该在返回后捕获平均值,而不是忽略它。或者也许函数根本不应该返回平均值。

关于c - 计算未知数量输入的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32940384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com