标签:c
数组
第10题
【描述】
中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数或最中间两个数据的平均值(如果这组数的个数为奇数,则中位数为位于中间位置的那个数;如果这组数的个数为偶数,则中位数是位于中间位置的两个数的平均值)。
给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)。
【输入】
包含多组测试数据,每一组测试数据的第一行为n,代表该组测试数据包含的数据个数,1 <= n <=10000。
接着n行为n个数据。n为0时结束输入。
【输出】
输出中位数,每一组测试数据输出一行。
【输入示例】
4
10
30
20
40
3
40
30
50
4
1
2
3
4
0
【输出示例】
25
40
2
#include<stdio.h>
//一开始忘记排序了
void queue(int a[],int i){ //a[]前要加类型名,[]里面不用加数字
int t,p,temp;
for(t=0;t<i;t++)
for(p=0;p<i-t;p++){
if(a[p]>a[p+1]){
temp=a[p+1];
a[p+1]=a[p];
a[p]=temp;
}//一开始这里的if的{}忘记加了,导致结果为0;
}
}
int main(){
int n,i=0,t,mid;
int a[100];
while(1){
scanf("%d",&n);
if(n==0)
break;
while(n--){
scanf("%d",&a[i++]);
}//这之后n无效了,有i个数据
queue(a,i); //实参里的数组只需要一个数组名a就行了,不用[]
if(i%2==0)
printf("%d\n",(a[i/2]+a[i/2-1])/2);
else
printf("%d\n",a[(i-1)/2]);
i=0;
}
}标签:c
原文地址:http://blog.csdn.net/u011545923/article/details/41594993