①目标
输入一个正数数组 , 求平均值 ,
并根据平均值重新排序 ,
大于平均值的数前置 ,
小于等于平均值的值后置 。
~
②命令行
#include< stdio.h>
调用输入输出函数库
【c语言|C语言-数组平均值与排序】#include<stdlib.h>
调用文件函数库
#define N 10
宏定义 , 简单理解为N=10
~
③定义函数
double fun (double *x)
/*定义的fun函数有3个功能 , 平均值、前置和后置*/
{
int ij;double savy[N
;
/*定义临时数组y[N
用于储存重新排序后的数组元素*/
s=0;
for(i=0;i<N;i++) s=s+x[i
;
/*累加 , 为平均值做准备*/
av=s/N;
/*求平均值 , 还有一种方法是av=av+x[i
/N*/
for(i=j=0;i<N;i++)
if(x[i
>av)
{y[j++
=x[i
;x[i
=-1;
/*筛选出大于平均值的数 , 放入y[j++
中 , 配合i++j也++ 。 并把大于平均值的数重新赋值为-1或者其他负数 , 区分其他小于等于平均值的正数*/
for(i=0;i<N;i++)
if(x[i
!=-1)
y[j++
=x[i
;
/*筛选出不等于-1的数 , 即小于等于平均值的数 , 再排在y[j++
的后面 。
至于此处筛选小于等于平均值 , 为什么要用-1替换?而不直接用x[i
<=av?我也不知道 , 试了一下结果没变 , 猜测可能是为了规避重复 , 希望有大神解答*/
for(i=0;i<N;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<N;i++)
{x[i
=rand()%50;printf(\"%4.0f\"x[i
);
/*输入x[i
的元素为0到49的随机数 , 4.0表示用空格间隔*/
printf(\"\\");
printf(\"\The average is:%f\\"fun(x));
/*输出平均值*/
printf(\"\The result :\\"fun(x));
/*这里可以不要输出项fun(x)理解输出固定字符串The result:*/
for(i=0;i<N;i++)
printf(\"%4.0f\"x[i
);
/*输出重新排序后的x[i
*/
printf(\"\\");
- 键盘|网上商城开发:java&php语言如何选择?
- IT之家3月16日消息|华为编程语言实验室发布问卷调查
- 华为|华为自研编程语言来了:“仓颉”试用报名开启
- 湖南工程师用中文编写操作系统,还发明了甲、乙、丙语言?
- 原标题:Win11风格全宇宙首个中文编写的操作系统“火龙”被质疑抄袭无论是编程语言还是操...|win11风格全宇宙首个中文编写的操作系统“火龙”被质疑抄
- 黑客|网上商城开发:java&php语言如何选择?
- c语言|C语言-矩阵转置
- c语言|C语言-统计字符串中字母个数
- c语言|4GB:iPhone SE3的RAM确认
- 化妆品|C语言-字符串变数字