C语言高手请近来帮帮忙啊 多谢了~

来源:百度知道 编辑:UC知道 时间:2024/05/14 08:00:22
下面是我遍的程序,但运行之后显示floating point error:domain
请问是怎么回事,该怎么解决?
#include<math.h>
float max(float x,float y,float z)
{float m1,m2,m3;
m1=x>y?x:y;
m2=y>z?y:z;
m3=m1>m2?m1:m2;
return(m3);}
float sm1(float c1[100][100])
{int b1=0,e1=0,f1=0;
float sm1=c1[0][0];
for(b1=1;b1<100;b1++)
{for(e1=1;e1<100;e1++)
f1=sm1<c1[b1][e1]?f1:b1;}
return(f1);}
float sm2(float c2[100][100])
{int b2=0,e2=0,f2=0;
float sm2=c2[0][0];
for(b2=1;b2<100;b2++)
{for(e2=1;e2<100;e2++)
f2=sm2<c2[b2][e2]?f2:b2;}
return(f2);}
main()
{int D0=120e6;
int i=0,j=0;
float a,r;
float b[50]={1.729e-2},h[10]={6.916e-2},v[100][100];
float D,T,D1,T1,Da,Db,Dc,Dm;
while(h[i]<=7.904e-2)
{while(h[i]/b[j]>=2.5&&h[i]/b[j]<=4.0)
{Da=3319.0/(h[i]*b[j])+6.0*875.0/(h[i]*h[i]*b[j])+6.0*498.0/(h[i]*b[j]*b[j]);

while(h[i]/b[j]>=2.5&&h[i]/b[j]<=4.0)
数组越界了,i竟增大到70

语法没什么错,应该是逻辑错,就在while语句段里面。你写的代码没看出来是干什么的。
写得太差了,太乱。变量命名太随便。

我也想知道怎么回事!

float sm1(float c1[100][100])
{int b1=0,e1=0,f1=0;
float sm1=c1[0][0];
for(b1=1;b1<100;b1++)
{for(e1=1;e1<100;e1++)
f1=sm1<c1[b1][e1]?f1:b1;}
return(f1);}
float sm2(float c2[100][100])
{int b2=0,e2=0,f2=0;
float sm2=c2[0][0];
for(b2=1;b2<100;b2++)
{for(e2=1;e2<100;e2++)
f2=sm2<c2[b2][e2]?f2:b2;}
return(f2);}

这两个函数的返回值类型都是float型,但你返回的时候返回的f1,f2都是int型的.自己该一下吧,很好改,我就不帮你改了.