函数fun的功能是计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中小于平均值的数据移至数组的前部,大于等于平均值的数据移至x所指数组的后部。

#include <stdlib.h>
#include <stdio.h>
#define N 10 //定义串长(#define 定义一个标识符来表示一个常量。其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。)
double fun(double *x)//fun这个函数的返回值是一个函数指针,这个函数指针指向“包含一个double类型的参数,并且返回值是double类型的函数”
{int i, j; double av, y[N];//用double定义平均值(double是双精度浮点型,表示数据时会精准一点)
  av=0;
/**********found**********/
  for(i=0; i<N; i++) av +=x[i]/N;//这个循环来求平均值(av=x[0]/N+x[1]/N+...+x[N-1]/N),i<N时就一直循环
  for(i=j=0; i<N; i++)
    if(x[i]<av){
/**********found**********/
      y[j]=x[i]; x[i]=-1; j++;}//如果x[i]小于平均值就将x[i]存储在y数组中,变量i是循环变量,变量j记录数组y的下标变化,下一次执行if内部语句时,y数组的下标应为下一个位置,所以这为j加1
  i=0;
  while(i<N)
  {if(x[i]!= -1) y[j++]=x[i];
/**********found**********/
     i++;//i为while循环的循环变量,第一次进入while的时候i为0,判断第一个元素x[0]是否是-1,第二次进入的时候判断第二个元素x[1]是否是-1,直到i=N退出循环,故第三处是变量i自增。
  }
  for(i=0; i<N; i++)x[i] = y[i];
  return av;
}
main()
{int i; double x[N];
  for(i=0; i<N; i++){x[i]=rand()%50; printf("%4.0f ",x[i]);}
  printf("\n");
  printf("\nThe average is: %f\n",fun(x));
  printf("\nThe result :\n",fun(x));
  for(i=0; i<N; i++) printf("%5.0f ",x[i]);
  printf("\n");
}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值