杭电acm2014的C语言问题,为什么提交了却是Compilation Error,求大神解答!

题目要求输入每行的第一个数是n(2<n<=100),表示评委的人数,然后是n个评委的打分,选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分。下面是我的代码,我知道输入分数当超过100的时候就不正确了,但想知道为什么。
#include "stdio.h"

int main()

{

int n,i,t,j,a[i];

double sum;

while (scanf("%d",&n)!=EOF) {

sum=0;

for (i=1; i<=n; i++) {

scanf("%d",&a[i]);

}

for (i=0; i<n-1; i++) {

for (j=1; j<n-i; j++) {

if (a[j]>a[j+1]) {

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

for (i=2; i<n; i++) {

sum+=a[i];

}

sum=sum/(n-2);

printf("%.2lf\n",sum);

}

return 0;

}

#include "stdio.h"//最好改成#include <stdio.h>
int i,a[i];c语言不支持这种形式。因为n<=100的所以你可以这样写:

const int N=105;
int a[N];
另外提示你的是编译错误。追问

但我改了之后再编译了下是正确的,而且输入输出也是正确的,但为什么提交后显示wrong answer?解答了给你加分!

追答

for (i=1; i<=n; i++) {

scanf("%d",&a[i]);

}改为:
for (i=0; i<n; i++)
scanf("%d",&a[i]);

for (i=2; i<n; i++) {

sum+=a[i];

}改为:
for (i=1; i<n-2; i++)
sum+=a[i];

追问

额,我自己研究下解决了,不过还是谢谢你的帮忙!

追答

解决就好了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-11
#include <stdio.h>

int main() {
int i,n,score;
double sum;
while (scanf("%d",&n) != EOF) {
sum = 0;
for (i = 0; i < n; i++) {
scanf("%d",&score);
sum += score;
}
printf("%.2lf\n",sum / n);
}
return 0;
}

相似回答