输入数据有多组,每组占一行,每行的第一个数是n ,n大于2且小于等于100,表示评委的人数,然后是n个评委的打分,分数都是整数。
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。
#include<stdio.h>
int main()
{ int a[1010],max,min,n,i;
double ave;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%lf",&a[i]);
max=a[0];
min=a[0];
ave=a[0];
for(i=1;i<n;i++)
{
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
ave=ave+a[i];
}
ave=ave-max-min;
n=n-2;
printf("%.2lf\n",ave/n);
}
return 0;
}
做出来不对,可是不知道怎么改,求大神指教T T
关于C语言的一道题:评委会打分
答案:3 悬赏:0 手机版
解决时间 2021-02-28 11:35
- 提问者网友:我们很暧昧
- 2021-02-27 11:00
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-02-27 11:23
scanf("%d",&s);改为scanf(" %d",&s); //%d前边多了个空格,去掉上一个回车字符。
(float)sum-max-min改为(float)(sum-max-min)//最后结果强制转换
(float)sum-max-min改为(float)(sum-max-min)//最后结果强制转换
全部回答
- 1楼网友:北方的南先生
- 2021-02-27 11:47
#include<stdio.h>
int main()
{
int n = 0;
int nMax = 0,nMix = 0;
int i = 0,nRead = 0;
double dbAVG = 0.0;
while(1)
{
while(n <= 2 || n > 100 )
{
if (EOF == scanf("%d",&n) || -1 == n)
{
return 0;
}
}
i = 0;
while(i++ < n)
{
if (EOF == scanf("%d",&nRead))
{
return 0;
}
if(nRead > nMax)
{
nMax = nRead;
}
if(nRead < nMix)
{
nMix = nRead;
}
dbAVG += (double)nRead;
}
dbAVG -= (double)(nMax + nMix);
dbAVG /= (double)(n - 2);
printf("%.2lf\n",dbAVG);
n = 0,dbAVG = 0.0,nMax = 0,nMix = 0;
}
return 0;
}
- 2楼网友:第四晚心情
- 2021-02-27 11:29
#include <stdio.h>
int main(void)
{
int n;
while (scanf("%d", &n) != EOF) {
float max = 0, min = 100;
float a;
float sum = 0;
int i;
for (i = 0; i < n; i++) {
scanf("%f", &a);
sum += a;
if (max < a)
max = a;
if (min > a)
min = a;
}
printf("%.2f\n", (sum - max - min) / (n - 2));
}
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯