能不能帮我看一下
#include<stdio.h>
#include<math.h>
int main()
{
int i;
float a;
float max, min, sum, G;
sum = 0;
i = 0;
while (i<10)
{
scanf("%f", &a);
sum = sum + a;
max = a;
min = a;
a > max ? max = a : max = max;
a < min ? min = a : min = min;
i++;
}
G = (sum - max - min);
G = G / 8;
printf("%.4f", G);
return 0;
}
我帮你改了一下,你试试看
#include<stdio.h>
int main()
{
int i;
float a;
float max, min, sum, G;
sum = 0;
i = 0;
while (i<10)
{
scanf("%f", &a);
sum = sum + a;
if(i==0)
{
max = a;
min = a;
}
else
{
max=a > max ? a : max;
min=a < min ? a : min;
}
i++;
}
G = (sum - max - min);
G = G / 8;
printf("%.4f", G);
return 0;
}
你的最大值和最小值都是每次输入的值,不会进行改变。比如1,2,3,4,5,6,7,8,9,10
输入1后,你的最大值和最小值都是1,经过三目运算符,最大最小值不改变,因为一直都是和自己作比较
输入2后,你的最大值和最小值都是2,经过三目运算符,最大最小值仍然没有变化
到了输入10的时候,sum的值已经是55了,减去最大值和最小值10,就是35/8=4.3750
#include<stdio.h>
#include<math.h>
int main()
{
int i;
float a;
float max, min, sum, G;
scanf("%f", &a);//首先把第一个数值输入作为初始
max = min = a;
sum = a;//记得把第一个值加进去
i = 1;//因为已经输入一个数了
while (i<10)
{
scanf("%f", &a);
sum = sum + a;
a > max ? max = a : max = max;
a < min ? min = a : min = min;
i++;
}
G = (sum - max - min);
G = G / 8;
printf("%.4f", G);
return 0;
}
算出来老是比手算的小一点,错在哪里了
举个具体点的例子
你的16 17行的比较语句应该是想把输入的数与MAX 和 MIN 比较,但你前面14 15行把 a 赋值给了MAX 和 MIN,这样下面的比较就没有意义了吧?
可以检验一下:程序结果是不是总和减去了两倍的最后一个输入,然后除了8.