杭电ACM2016题怎么一直wrong answer……

自己运行没有问题,结果也对,但是提交上去就是wrong answer……
题目是:
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
输入数据有多组,每组占一行,每行的第一个数是n(2<n<100),表示评委的人数,然后是n个评委的打分。
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。

我的程序是这样的:

#include<stdio.h>
int main()
{
int n,i,max,min;
float z,a[100];
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
scanf("%f",&a[i]);
max=min=1;
for(i=2;i<=n;i++)
{
if(a[i]>a[max])max=i;
if(a[i]<a[min])min=i;
}
for(z=0,i=1;i<=n;i++)
if((i!=max)&&(i!=min))z+=a[i];
z=z/(n-2);
printf("%.2f\n",z);
}
return 0;
}
我是用C语言编的,因为现在只能看懂C……

第1个回答  2011-02-06
是HDU2014吧。。
你的代码这样改就AC乐。。
汗~! 无语,才发现我用G++提交AC了,用C提交就错了。。
汗~! 我试了下,你原来的代码用G++提交也也AC了。。
偶也不知道原因。。
杭电的OJ的各种编译器很乱。。
楼主自己去提交下试试吧。。
#include<stdio.h>
int main()
{
int n,i,max,min;
double z,a[100]; //acm里尽量用double,几乎不用float
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=n;i++)
scanf("%lf",&a[i]);
max=min=1;
for(i=2;i<=n;i++)
{
if(a[i]>a[max])max=i;
if(a[i]<a[min])min=i;
}
for(z=0,i=1;i<=n;i++)
if((i!=max)&&(i!=min))z+=a[i];
z=z/(n-2);
printf("%.2lf\n",z);
}
return 0;
}
这题可以不用开数组。。
我的AC代码。。
#include<stdio.h>
int main()
{
int n,i;
double a,sum;
double min,max;
while(scanf("%d",&n)!=EOF)
{
scanf("%lf",&a);
min=max=sum=a;
for(i=1;i<n;i++)
{
scanf("%lf",&a);
sum+=a;
if(min>a)
min=a;
if(max<a)
max=a;
}
printf("%.2lf\n",(sum-min-max)/(n-2));
}
return 0;
}
第2个回答  2011-02-06
#include<iostream>
using namespace std;
int a[100];
int main()
{
int i,n;
while(cin>>n)
{
if(n<=0 || n>100)
{ exit(0); }
for(i=0;i<n;i++)
{cin>>a[i];}
int min=a[0],j=0,t;
for(i=1;i<n;i++)
{if(a[i]<min)
{ min=a[i];j=i; }
}
if(j!=0)
{ t=a[j];
a[j]=a[0];
a[0]=t;
}
for(j=0;j<n-1;j++)
{cout<<a[j]<<" ";}
cout<<a[n-1]<<endl;
}
return 0;
}
自己试试吧,哈··················本回答被提问者和网友采纳
第3个回答  2011-02-12
#include<iostream>
#include<vector>
using namespace std;
int max(int,int);
int min(int,int);
int main()
{
vector<float> ivec;
int n,x,m,g=0;
float k;
while(cin>>n)
{ g++;
float p=0,sum=0;
float q=100;
for(m=1;m<=n;m++)
{
cin>>x;
p=max(p,x);
q=min(q,x);
sum+=x;
}
k=(sum-p-q)/(n-2)*1.00f;
ivec.push_back(k);
}
for(vector<int>::size_type ix=0;ix<g;ix++)
{
cout.setf(ios::fixed);
cout.precision(2);
cout<<ivec[ix]<<endl;
}
return 0;
}
int max(int a,int b)
{
if(a>b)
return a;
else
return b;
}
int min(int c,int d)
{
if(c>d)
return d;
else
return c;
}
我不会C,现在还没有学,这个是C++的,你可以看看,挺好懂的
第4个回答  2011-02-07
#include<stdio.h>
#include<math.h>
void main()
{
int i,n,min,a[100],k,t;
while(scanf("%d",&n)!=EOF)
{
t=0;
if(n==0)
break;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
min=a[0];
for(i=0;i<n;i++)
{
if(min>a[i])
{
min=a[i];
t=i;
}
}
k=a[0];
a[0]=a[t];
a[t]=k;
for(i=0;i<n-1;i++)
printf("%d ",a[i]);
printf("%d\n",a[i]);
}
}

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网