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

题目:计算评分【要求】N=7个评委的评分从键盘输入(10分制,即评委的评分值最大和最小可为10和0,检查输入的合理性)。评分计算方法:去掉一个最高分、去掉一个最低分,余下... 题目:计算评分
【要求】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型,编译器报错(看不懂英文,不知道报什么错了),大神帮忙看看怎样改。。
展开
 我来答
ylcqucc
2014-12-01 · TA获得超过1435个赞
知道小有建树答主
回答量:862
采纳率:0%
帮助的人:323万
展开全部
修改后的代码如下:
#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;
}
Mirainoe
2014-11-30 · TA获得超过315个赞
知道小有建树答主
回答量:513
采纳率:0%
帮助的人:261万
展开全部
用double进行浮点运算,读入、输出的时候用%lf
追问
就是把所有的int改为double?
追答
恩,最好不要用float进行浮点运算
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牛牛牛不牛0720
2014-11-30 · TA获得超过342个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:344万
展开全部
把int型改为float型.scanf_s函数也要使用 %f
更多追问追答
追问

还是有红线,怎么办?

追答
变量 i 需要定义成 int 类型的啊'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
月光大帝2
2014-11-30 · TA获得超过239个赞
知道小有建树答主
回答量:299
采纳率:33%
帮助的人:93万
展开全部
我瞎了...
追问
哈哈?
追答
解决了嘛?~没解决我再看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式