void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a[26][1],m,n,b,lw,tk,tox,f,l1,l2,s,ey,e,ac,q,ki,kj,km,kic,jic,u,t,v;
const double pi=3.14;
double a1,a2,a3;
int i,j,k,c,y,z;
y=1;
t=0;
k=0;
[color=FFFF00][color=FF00FF]b=StrToFloat(Edit1->Text);
lw=StrToFloat(Edit2->Text);
tk=StrToFloat(Edit3->Text);
tox=StrToFloat(Edit4->Text);
s=StrToFloat(Edit5->Text);
v=StrToFloat(Edit8->Text);
u=StrToFloat(Edit9->Text);[/color][color=0000FF]
FILE *stream1=fopen("s.txt","r");
{
for(i=0;i<=24;i++)
{
fscanf(stream1,"%f\n",&a[i][0]);
}
for(j=1;j<=24;j++)
{
m=a[0][0];
if(m<a[j][0]) m=a[j][0];
}
for(j=1;j<=24;j++)
{ if(a[j][0]>=0)
{
a[k][0]=a[j][0];k++;
}
n=a[0][0];
for(c=0;c<k;c++)
{
if(n>a[c][0]) n=a[c][0];
}
}
fclose(stream1);[/color]}
[color=FF00FF]ey=StrToFloat(Edit6->Text);
e=StrToFloat(Edit7->Text);
[color=000000]l1=e+ey;
l2=e/ey;
if(e>ey) ac=s/(0.4511*pi*l1);
else ac=s/(0.4511*2*pi*ey*l2);[/color]
[color=FF0000]while(y)
{
f=145-b;
if(f>110) jic=95.7-34.4*(f-110)/35;
else jic=163.5-67.8*(f-90)/20;
z=jic*v/(1-u*u);
kic=sqrt(z);
ki=2.11*m*sqrt(pi*b)/pi;
kj=2.11*n*sqrt(pi*b)/pi;
if(ki<0.6*kic)
{
km=ki-kj;
a1=0.35*log10(tk)+0.65*log10(lw)-2.07;
a2=0.47*log10(tox)+0.53*log10(lw)-3.77;
a3=1.95*log10(km)+log10(lw)-8.6;
q=pow(10,a1)+pow(10,a2)+pow(10,a3);
b=b+q;
t=t+1;
}
if(b>ac) break;
}
[color=000000]Edit10->Text=FloatToStr(b);
Edit11->Text=FloatToStr(t);
上面是我编写的程序,粉红的语言是从界面读进去数值,兰色的是从一个有26个数的文件s中求出最大值和正的最小值,以上两个部分应该不是问题的所在处,而红色的语言是实现循环的语句,是出问题的地方,为什么我能求出b的值,但是t的值为什么是1呢?和我手算的结果不一样啊!麻烦各位费心哦![/color]