C语言 用一个函数产生所需的二维矩阵 然后返回给主函数0
#include
#include
#include
#include
long double fematiso(int ipot,long double e,long double u)
{
if(ipot==1)
{
long double m[3][3]={{e/(1-u*u),e*u/(1-u*u),0},
{e*u/(1-u*u),e/(1-u*u),0},
{0,0,(e/(1-u*u))*(1-u)/2}};
return m;
}
else if(ipot==2)
{
long double m[3][3]={{e/((1+u)*(1-2*u))*(1-u),e/((1+u)*(1-2*u))*u,0},
{e/((1+u)*(1-2*u))*u,e/((1+u)*(1-2*u))*(1-u),0},
{0,0,e/((1+u)*(1-2*u))*(1-2*u)/2}};
return m;
}
else if(ipot==3)
{
long double m[4][4]={{e/((1+u)*(1-2*u))*(1-u),e/((1+u)*(1-2*u))*u,e/((1+u)*(1-2*u))*u,0},
{e/((1+u)*(1-2*u))*u,e/((1+u)*(1-2*u))*(1-u),e/((1+u)*(1-2*u))*u,0},
{e/((1+u)*(1-2*u))*u,e/((1+u)*(1-2*u))*u,e/((1+u)*(1-2*u))*(1-u),0},
{0,0,0,e/((1+u)*(1-2*u))*(1-2*u)/2}};
return m;
}
else
{
long double m[6][6]={{e/((1+u)*(1-2*u))*(1-u),e/((1+u)*(1-2*u))*u,e/((1+u)*(1-2*u))*u,0,0,0},
{e/((1+u)*(1-2*u))*u,e/((1+u)*(1-2*u))*(1-u),e/((1+u)*(1-2*u))*u,0,0,0},
{e/((1+u)*(1-2*u))*u,e/((1+u)*(1-2*u))*u,e/((1+u)*(1-2*u))*(1-u),0,0,0},
{0,0,0,e/((1+u)*(1-2*u))*(1-2*u)/2,0,0},
{0,0,0,0,e/((1+u)*(1-2*u))*(1-2*u)/2,0},
{0,0,0,0,0,e/((1+u)*(1-2*u))*(1-2*u)/2}};
return m;
}
//return m[0][0];
}
void main()
{
long double *matmtx;
matmtx=fematiso(4,emodule,poisson);
for(i=0;i<6;i++)
for(j=0;j<6;j++)
printf("%d %d %lf\n",i,j,matmtx[i][j]);
}
上面是自己编的,初学C语言
不知道哪里的错
求各位帮帮忙