说明
求N个整数的平均数,众数和中位数。
小知识:
- 众数
如有9个数:17 13 17 9 17 17 3 16 17 17出现的次数最多,即为这组数的众数。
此题保证众数是唯一的。 - 中位数
如有9个数:102 170 96 90 97 106 110 182 100
将这9个数按一定的顺序(从大到小或从小到大)排列后得到:
182 170 110 106 102 100 97 96 90 正中间的一个数是102,102是这组数的中位数。
而这10个数:106 99 104 120 107 112 33 102 97 100
按一定顺序排列后得到:120 112 107 106 104 102 100 99 97 33
正中间有两个数:104 102,中位数就是这两个数的平均数,即(104+102)/ 2 = 103。
输入格式
第一行为整数N(5 <= N <= 10000 ) 第二行为空格隔开的N个数Ai(0 <= Ai <= 100 )
输出格式
输出空格隔开的平均数 众数 中位数(平均数保留两位小数,中位数保留一位小数)。
#include<stdio.h>
int b[101];
int main(){
int n,i,j,s=0,k,temp;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++){scanf("%d",&a[i]);k=a[i];s=s+k;b[k]++;
}
printf("%.2lf ",s*1.0/n);
int t=0;
for(i=0;i<n;i++){if(b[t]<b[i]){t=i;}
}
printf("%d ",t);
for(i=0;i<n-1;i++){for(j=0;j<n-1;j++){if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}
}
if(n%2!=0){printf("%.1lf",a[n/2]*1.0);
}else{printf("%.1lf",(a[n/2]+a[n/2-1])/2.0);
}return 0;
}