C语言 求平均数然后输出一个保留2位小数的结果,大神帮忙看看怎么改。

题目:计算评分
【要求】N=7个评委的评分从键盘输入(10分制,即评委的评分值最大和最
小可为10和0,检查输入的合理性)。评分计算方法:去掉一个最高分、去掉
一个最低分,余下评委打分的平均分为结果,输出结果要求到小数点后两位。

这个是我写的程序:

int i=0, j=0, n=0, min=0, max=0,sum=0;
int a[7];
for (i = 0; i < 7; i++)
scanf_s("%d,", &a[i]);
if (min>a[i])
{
min = a[i + 1];
a[i] = min;
a[i] = a[i + 1];
}
if (max < a[j])
{
max = a[j - 1];
a[j] = max;
a[j] = a[j - 1];
}
{
min = a[1];
max = a[7];
}

sum = a[2] + a[3] + a[4] + a[5] + a[6];
n = (sum / 5);
printf("%5.2f",(float) n);

return 0;
}
问题是:在这个程序里面如果想将最后结果保留2位小数,强制转换成float型,后面的小数丢失了,把int型改为float型,编译器报错(看不懂英文,不知道报什么错了),大神帮忙看看怎样改。。

修改后的代码如下:
#include <stdio.h>
int main()
{
//int i=0, j=0, n=0, min=0, max=0,sum=0;
int i=0, j=0;
double n=0,min=0, max=0,sum=0;
//int a[7];
double a[7];
for (i = 0; i < 7; i++)
scanf("%lf", &a[i]);
if (min>a[i])
{
min = a[i + 1];
a[i] = min;
a[i] = a[i + 1];
}
if (max < a[j])
{
max = a[j - 1];
a[j] = max;
a[j] = a[j - 1];
}
{
min = a[1];
max = a[7];
}

sum = a[2] + a[3] + a[4] + a[5] + a[6];
n = (sum / 5);
printf("%5.2f", n);

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-11-30
用double进行浮点运算,读入、输出的时候用%lf追问

就是把所有的int改为double?

追答

恩,最好不要用float进行浮点运算

本回答被提问者采纳
第2个回答  2014-11-30
把int型改为float型.scanf_s函数也要使用 %f追问

还是有红线,怎么办?

追答

变量 i 需要定义成 int 类型的啊'

追问

欲哭无泪。。。。。

第3个回答  2014-11-30
我瞎了...追问

哈哈?

追答

解决了嘛?~没解决我再看看

相似回答