C语言,这是我编的求矩阵行列式的函数,但是出了问题,求解答

#include<stdio.h>#include<stdlib.h>floatdet(float**p,intm){if(m=1){return**p;}//行数为1直... #include<stdio.h>
#include<stdlib.h>
float det(float **p,int m)
{
if(m=1)
{
return **p;
}//行数为1直接返回
else
{
int c,i,j;
float ***p2=NULL;
float deter=0;
p2=(float ***)malloc((m)*sizeof(float));
for(i=0;i<m;i++)
{
p2[i]=(float **)malloc((m-1)*sizeof(float));
}
for(j=0;j<m-1;j++)
{
p2[i][j]=(float *)malloc((m-1)*sizeof(float));
}//第一维是p第几列的余子式,第二维第三维是余子式
for(c=0;c<m;c++)
{
for(i=0;i<m-1;i++)
{
for(j=0;j<m-1;j++)
{
if(j<c)p2[c][i][j]=(*(*(p+i+1)+j));
else p2[c][i][j]=(*(*(p+i+1)+(j+1)));
}
}
}//余子式赋值
for(c=0;c<m;c++)
{
if(c%2==0||c==0)deter=deter+det(p2[c],m-1);
else deter=deter=deter+(-1)*det(p2[c],m-1);
}//行列式计算
return deter;
}
}

当输入({1,1}{1,1})的时候行列式值求出来是1(应该是0)求帮忙解答
展开
 我来答
青青墙外草
推荐于2016-02-13 · TA获得超过2211个赞
知道小有建树答主
回答量:777
采纳率:68%
帮助的人:479万
展开全部

你这个程序至少有两个问题(可能还有别的错误,我再看看)

第一个

if(m=1)  // 应该是m==1
{
return **p;
}//行数为1直接返回


第二个问题,循环嵌套不对,下面是正确的代码,注意大括号位置。

		for (i = 0; i<m; i++)
{
p2[i] = (float **)malloc((m - 1)*sizeof(float));
for (j = 0; j<m - 1; j++)
{
p2[i][j] = (float *)malloc((m - 1)*sizeof(float));
}//第一维是p第几列的余子式,第二维第三维是余子式
}
高楼寻缝
2014-07-29 · TA获得超过175个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:163万
展开全部
没看懂。但if(m=1)很明显应为 if(m==1)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式