目标
输入一个正数数组,求平均值,
并根据平均值重新排序,
大于平均值的数前置,
小于等于平均值的值后置。
~
命令行
#include< stdio.h>
调用输入输出函数库
#include
调用文件函数库
#define N 10
宏定义,简单理解为N=10
~
定义函数
double fun (double *x)
/*定义的fun函数有3个功能,平均值、前置和后置*/
{
int i,j;double s,av,y[N];
/*定义临时数组y[N],用于储存重新排序后的数组元素*/
s=0;
for(i=0;i
/*累加,为平均值做准备*/
av=s/N;
/*求平均值,还有一种方法是av=av+x[i]/N*/
for(i=j=0;i
if(x[i]>av)
/*筛选出大于平均值的数,放入y[j++]中,配合i++,j也++。并把大于平均值的数重新赋值为-1或者其他负数,区分其他小于等于平均值的正数*/
for(i=0;i
if(x[i]!=-1)
y[j++]=x[i];
/*筛选出不等于-1的数,即小于等于平均值的数,再排在y[j++]的后面。
至于此处筛选小于等于平均值,为什么要用-1替换?而不直接用x[i]
for(i=0;i
x[i]=y[i];
/*再用重新排序的y[i]替换x[i],即完成了x[i]的排序。*/
return av;
/*令fun(x)函数的结果为平均值av*/
}
~
主函数(调用)
void main()
{
int i;double x[N];
for(i=0;i
/*输入x[i]的元素为0到49的随机数,4.0表示用空格间隔*/
printf("\n");
printf("\nThe average is:%f\n",fun(x));
/*输出平均值*/
printf("\nThe result :\n",fun(x));
/*这里可以不要输出项fun(x),理解输出固定字符串The result:*/
for(i=0;i
printf("%4.0f",x[i]);
/*输出重新排序后的x[i]*/
printf("\n");
}
领取专属 10元无门槛券
私享最新 技术干货