运行了一段c程序,屏幕显示floating point error:domain,要怎么修改?

来源:百度知道 编辑:UC知道 时间:2024/05/25 08:01:28
#include<stdio.h>
#include<math.h>
#define E 210
#define I 14.3
main()
{
int angle=25,g1=250,g2=960;
float f[2][3],f_y,f_z,f_b,t=1085.3,t1=683.3,t2=468.2;
f[0][0]=v1(t*sin(angle/180*3.14));
f[0][1]=v2(g1+3*t1);
f[0][2]=v3(g2);
f[1][0]=v1(t*cos(angle/180*3.14));
f[1][1]=0;
f[1][2]=v3(3*t2);
f_y=f[0][0]+f[0][1]+f[0][2];
f_z=f[1][0]+f[1][1]+f[1][2];
f_b=sqrt(pow(f_y,2)+pow(f_z,2));
printf("%e,%e,%e",f_y,f_z,f_b);
}
v1(float f)
{
int a=3;
float v;
v=3*f*pow(a,3)/(4*E*I)/10000;
return(v);
}
v2(float f)
{
int a=3;
float v;
v=7*f*pow(a,3)/(12*E*I)/10000;
return(v);
}
v3(float f)
{
int a=3;
float v;
v=5*f*pow(a,3)/(8*E*I)/10000;
return(v);
}

改成如下,在我机器上运行通过:

#include<stdio.h>
#include<math.h>
#define E 210
#define I 14.3

float v1(float f)
{
int a=3;
float v;
v=3*f*pow(a,3)/(4*E*I)/10000;
return(v);
}
float v2(float f)
{
int a=3;
float v;
v=7*f*pow(a,3)/(12*E*I)/10000;
return(v);
}
float v3(float f)
{
int a=3;
float v;
v=5*f*pow(a,3)/(8*E*I)/10000;
return(v);
}

main()
{
int angle=25,g1=250,g2=960;
float f[2][3],f_y,f_z,f_b,t=1085.3,t1=683.3,t2=468.2;
f[0][0]=v1(t*sin(angle/180*3.14));
f[0][1]=v2(g1+3*t1);
f[0][2]=v3(g2);
f[1][0]=v1(t*cos(angle/180*3.14));
f[1][1]=0;
f[1][2]=v3(3*t2);
f_y=f[0][0]+f[0][1]+f[0][2];
f_z=f[1][0]+f[1][1]+f[1][2];
f_b=sqrt(pow(f_y,2)+pow(f_z,2));
printf("%f,%f,%f",f_y,f_z,f_b);
}

C不支持先调用,后声明的顺序,无法解析