这个题需要注意一些数据条件
尤其是一些输入数据条件
#include<algorithm> #include<stdio.h> #include<math.h> using namespace std; int main() { int n,m,i; float b[21],a[21]; double s,k; m=21; while(scanf("%d",&n)) { if(n==0||n<5)//就这个条件特别坑 想了好久都没想到还要注意这个条件。 break; s=0; for(i=0;i<n;i++) { scanf("%f",&b[i]);
a[i]=b[i];//先把数字和序号存起来,为了以后不乱序号。 } sort(b,b+n);//排序。 for(i=1;i<n-1;i++) { s=b[i]+s; }s=s/(n-2);//去掉最大 和最小 求和 求平均数 for(i=0;i<n;i++) { b[i]=fabs(b[i]-s); } k=b[1]; for(i=1;i<n-1;i++) { if(b[i]<k) { k=b[i];//挨个减去平均值 求最小的绝对值。 } } for(i=0;i<n;i++) { a[i]=fabs(a[i]-s);用原来的序号依次减去平均值,, if(a[i]==k)与最小的相比,等于最小后 输出序号。 { printf("%d ",i+1); break; } } } }