标签: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