程序题目描述:
编写程序,求n个整数的平均值与中位数,从键盘接收一个整数n,假定用户输入的n一定是满足3 <= n <= 100。接下来,从键盘接收n个整数存入数组。用户输入的整数,大小是杂乱无序的。
计算这n个数的平均值和中位数。中位数就是数组元素升序排列后,最中间的一个数(奇数个元素),或中间两个元素平均值(偶数个元素)。
【输入格式】
第一个整数4告诉计算机要输入4个数字。第二行输入这四个数字,数字之间用空格分开。
4
3 1 2 9
【输出格式】
平均值保留2位小数,中位数保留1位小数。两项信息之间用纯英文逗号隔开,整个输出信息中不含空格。
mean=3.75, median=2.5
总体设计思想:通过求和算出平均数,通过冒泡排序法按照从小到大的顺序求中位数,如果数组中的数字的个数是偶数,即n%2=0,中位数是这组数中的中间两个数的平均值,如果数组中的数字的个数是奇数,即n%2=!0或n%2=1,中位数是这组数中的中间的数。
代码:
#include <stdio.h>
int main()
{
int a[10000];
int i,n,t,x,sum=0;
float mean,median;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
sum=sum+a[i];
mean=sum*1.0/n;
for(t=0;i<n-1;t++)
{
for(i=0;i<n-1;i++)
{
if(a[i]>a[i+1])
{x=a[i];
a[i]=a[i+1];
a[i+1]=x;
}
}
}
if(n%2==0)
{
median=(a[n/2]+a[n/2-1])/2.0;
printf("mean=%.1f,median=%.2f",mean,median);
}
else
{
median=a[(n-1)/2];
printf("mean=%.1f,median=%.2f",mean,median);
}
return 0;
}
运行结果