C语言,为什么较大N不正确

#include
int main()
{
int n;
scanf("%d", &n);
double sum = 0.0;
double a;
double max = 0.0;
double min = 10.0;
for (int i = 1; i <= n; i++)
{
scanf("%lf", &a);
sum += a;
if (a > max)
{
max = a;
}
if (a < min)
{
min = a;
}
}
double average = (sum - max - min) / (n - 2);
printf("%.2lf", average);
return 0;
}

img

max和min 不能赋值。 在读入数之后再赋值

有没有可能超界了
换成long long int 试试

你的min初始值太小了。如果输入数据都比10大,最后输出就错了。

c里面有limits.h头文件,limits.h中定义了整型数据的取值范围。你可以#include <limits.h>,min的初值设为INT_MAX

或者你也可以单独将读入的第一个值设为最大值和最小值,然后后面循环读取数据时少读取一次。