c语言怎样找最小值(C语言-平均值最小偏移量)
①目标
求N个正数的平均值av?
并求其中小于且最接近平均值的数p?
~
②命令行
#include<stdio.h>
#include<stdlib.h>
#define N 10
~
③定义函数
double fun(double x[ ],double* av)
{int i,j;
double *av;
s=0;
for(i=0;i<N;i )s=s x[i];
/*先求和,x[i]是把新元素依次加上的意思*/
*av=s/N;
/*再求平均值,总和除以个数*/
d=999;
/*偏移量初始值取999,>49,肯定大于任何一个元素,保证*av-x[i]<=d顺利执行。*/
for(i=0;i<N;i )if(x[i]<*av&&*av-x[i]<=d)
/*条件是x[i]小于平均值,且最接近平均值,即偏移量d趋近于0。*/
{d=*av-x[i];
/*更新偏移量d,每找到一个小于平均值的数,就将其与平均值的差,作为新的偏移量,直到最小,所以初始d=999没关系,重点是趋势。*/
j=i;}
/*因为x[i]是不断变化的,所以求出小于且最接近平均值的数,将其下表赋值给j储存固定下来。*/
return x[j];
}
~
④主函数(调用)
viod main( )
{int i;
double x[N],av,p;
for(i=0;i<N;i ){x[i]=rand()P;printf("%4.0f",x[i]);}
/*x[i]在0至49取随机数,所以偏移量d大于49即可启动条件语句。*/
printf("\n");
p=fun(x,&av);
/*p就是函数值,即小于且最接近平均值的x[j]。*/
printf("\n the average is :%f\n",av);
printf("p=%5.1f",p);
printf("\n");}
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com