问题如下:
/* 标准文档模板 */
#include “Stdio.h”
#include “Conio.h”
#include “math.h”
float sum(float a[],int n)
/* 求和函数 */
{
float s=0;
int d;
for(d=0;d<n;++d)
{
s=s+a[d];
}
return s;
}
float std(float a[],int n)
/* 方差函数 */
{
float s=0;
int d;
for(d=0;d<n;++d)
{
s=s+pow((a[d]-sum(a,n)/n),2);
}
return sqrt(s/(n-1));
}
float bit,bim,bib;
int main(void)
{
float bbi[10], cls[35]={6897,6964,6982,7082,7066,7112,7068,6906,6856,7022,7098,
7076,7072,6982,7122,7182,7116,7350,7394,7614,7562,7610,7542,
7580,7362,7438,7294,7462,7370,7622,7762,7686,7652,7630,7418};
int n;
for (n=1;n<10;++n)
{
bbi[n]=((sum(cls,(3+n))-sum(cls,n))/3
+(sum(cls,(6+n))-sum(cls,n))/6
+(sum(cls,(12+n))-sum(cls,n))/12
+(sum(cls,(24+n))-sum(cls,n))/24)/4;
}
bbi[0]=(sum(cls,3)/3+sum(cls,6)/6+sum(cls,12)/12+sum(cls,24)/24)/4;
bim=bbi[0];
bit=bim+3*std(bbi,10);
bib=bim-3*std(bbi,10);
printf(“\n\nbit %.2f bim %.2f bib %.2f\n\n\n”,bit,bim,bib);
getch();
return 0;
}
已知此程序正确。运行后可以输出bit,bim,bib三个数据,要求是求一种算法,且这种算法算出的数值代替以上程序中的cls[0]运行后,输出的结果bit或bib其中的一个与这个值相同。
我开始用由小到大循环的方法,但不行,我怀疑此种方法的可行性。
后来我用一元二次方程求解法,算了五六天还是不对,也不知是二次方程的系数没算对,也不知是电脑计算过程中数据因溢出或丢失而出错。
>> 本文固定链接: http://www.vcgood.com/archives/3286
>> 转载请注明: liangkehuai 2009年09月27日 于 C语言帝国 发表