解决这道题的代码如下:
#include<stdio.h>
int main()
{
int n,i,j;
double average,sum,k;
while(scanf("%d",&n)!=EOF)
{
double a[100];
for(i=0;i<n;i++)
{
scanf("%lf",&a[i]);
}
for(i=1;i<n;i++)
{
for(j=n-1;j>=i;j--)
{
if(a[j]<a[j-1])
{
k=a[j-1];
a[j-1]=a[j];
a[j]=k;
}
}
}
sum=0;
for(i=1;i<n-1;i++)
{
sum=sum+a[i];
}
average=sum/(n-2);
printf("%.2lf\n",average);
}
return 0;
}
这道题本身不难,我写的时候思路也很清晰,也就是定义一个数组,把评委会给的分数分别放进去后,把数组里的数据进行冒泡排序法,然后在计算平均得分时把数组的第一个值和最后一个值去掉再计算就行了(还要注意精确度)。但是我在写完代码,运行后发现没错误但在提交时却报出了这个错误:
这一下子就出来三个error,但刚开始不知道是什么意思,但能清楚看到肯定是定义数组时出现了问题,后来我经过多次改动,在把double a[n]改成double a[100]后就成功通过了,原来我是以为在输入n的大小后再定义数组a[n]时数组a能马上通过n来获取大小,但实际不可以,下次写题时需要注意数组定义的这个问题了!
此题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2014