题目:编写一个程序求一组整数的中值。如果这组数的个数为奇数,那么中值就是排序后,的中间那个数;如果这组数的个数为偶数,那么中值就是排序后的中间两个数的平均值(也是这组数的平均值)。编写一个函数接受如下两个参数:
(1)整型数组。
(2)代表该数组元素个数的一个整数。
该函数应当返回数组的中值。注:为了练习指针的使用,请采用指针。
代码:
#include<iostream>
using namespace std;
int main()
{
void inv(int *p,int i);
float numMid(int *p,int i);
int a[100],t,k;
float num;
int *pt;
pt=a;
cout<<"请输入该数组元素个数:";
cin>>t;
cout<<"请输入一组整数:";
for(k=0;k<t;k++,pt++)
cin>>*pt;
pt=a;
inv(pt,t);
num=numMid(pt,t);
cout<<"该数组的中值是:";
cout.width(2);
cout<<num;
return 0;
}
void inv(int *p,int i) //冒泡法数组排序
{
int j,n,temp;
for(n=0;n<i-1;n++)
{
for(j=0;j<i-n;j++)
{
if(*(p+n)>*(p+n+1))
{
temp=*(p+n);
*(p+n)=*(p+n+1);
*(p+n+1)=temp;
}
}
}
return;
}
float numMid(int *p,int i) //求中值
{
float m;
if(i%2==0)
m=(*(p+i/2-1)+*(p+i/2))*1.0/2;
else
m=*(p+(i-1)/2);
return m;
}