[mw_shl_code=c,true]
#include<stdio.h>
#include<stdlib.h>
/*快速排序*/
int quick_sort(int *a, int n, int left, int right) {
int s, i, j;
int temp;
if(left < right) {
s = a[left];
i = left;
j = right + 1;
while(1) {
while(i + 1 < n && a[++i] > s);
while(j - 1 > -1 && a[--j] < s);
if(i >= j) {
break;
}
temp = a;
a = a[j];
a[j] = temp;
}
a[left] = a[j];
a[j] = s;
quick_sort(a, n, left, j - 1);
quick_sort(a, n, j + 1, right);
}
return 0;
}
/*求平均数*/
void get_avg(int *a,int n)
{
int i;
float sum=0;
for(i=0;i<n;i++)
{
sum+=a;
}
printf("平均数=%.2f\t",(sum/n));
}
/*求中位数*/
void find_middle(int *a,int n)
{
float middle;
if(n%2==1)
{
middle=a[n/2];
}
else
{
middle=(a[n/2]+a[n/2-1])/2.0;
}
printf("中位数=%.1f\t",middle);
}
/*求众数*/
int find_max_seq(int *a, int n)
{
int i, elem;
int count = 0, count1 = 0;
for(i = 0; i < n;i++ )
{
while(a==a[i+1])
{
count++;
i++;
}
if(count > count1)
{
count1 = count;
elem = a;
}
/*
因为暂时没想到如何当阵列里没有众数时,印出NO,于是就用当阵列里没有众数时,将elem赋值为-1,
在main函式中判断elem的大小,当elem=-1时,则印出NO,否则印出elem;
*/
else if(count1==0)
{elem=-1;}
count = 0;
}
return elem;
}
int main()
{
int n,max;
printf("请输入一个整数n:");
scanf("%d",&n);
int arr[n];
int i;
printf("请输入%d个整数(整数间用空格分开):",n);
for(i = 0; i < n; i++)
{
scanf("%d",&arr);
}
quick_sort(arr, n, 0, (n-1));
get_avg(arr,n);
find_middle(arr,n);
max=find_max_seq(arr, n);
if(max!=-1)
{printf("众数=%d",max);}
else
{printf("NO");}
system("pause");
return 0;
}[/mw_shl_code] |