【发布时间】:2020-03-08 06:58:32
【问题描述】:
这是我的代码:
#include <stdio.h>
int main()
{
float average;
int i, n, sum = 0, num, min, max;
printf("Number of Students: ");
scanf("%d", &n);
max = min = num;
for (i = 1; i < (n + 1); i++) {
printf("Students no: %d\n", i);
printf("Score: ");
scanf("%d", &num);
if (num > max) {
max = num;
}
if (num < min) {
min = num;
}
sum = sum + num;
}
average = 1.0*sum/n;
printf("Average score is %.2f\n", average);
printf("The highest score is %d\n", max);
printf("The lowest score is %d\n", min);
return 0;
}
问题是我的最大输出总是错误的,我不知道我的错误。以及如何添加获得最高分和最低分的学生人数?
【问题讨论】:
-
"我的最大输出总是错误的" 为什么?什么是正确的输出?你会得到什么?您的另一个问题似乎不相关,一个线程应该只包含 1 个问题。
-
你没有在任何地方初始化
min和max。行:max = min = num;应该是:max = 0; min = MAXINT。 -
所以我得到的最大输出是错误的(例如当我输入100,88和89时,它显示最小值为88,平均值为92.33,最大值为4195504,即错了)
-
好吧,在我将 max = min = num 更改为 max = min = 0 后,我的最低数字总是以某种方式变为 0
-
欢迎来到 Stack Overflow!请edit您的代码将其减少为您的问题的minimal reproducible example。您当前的代码包含许多与您的问题无关的内容 - 一个最小样本通常看起来类似于一个好的单元测试:只执行一项任务,并为可重复性指定输入值。