用C++编程求任意行列式的值

 我来答
帐号已注销
2008-10-29 · 超过14用户采纳过TA的回答
知道答主
回答量:34
采纳率:0%
帮助的人:0
展开全部
哥们儿,C语言 行吗

#include <stdio.h>
#include <stdlib.h>
#define MAX 9 /*定义最大为9阶行列式*/

int Fun(int n, int a[MAX][MAX] ); /*函数声明*/
main()
{
int n = 0; /*初始化阶数n*/
int i = 0, j = 0; /*i,j分别表示行与列*/
int a[MAX][MAX] = {{0}}; /*定义行列式*/

printf("please input n(n<=9) and then the array:");

scanf("%d",&n); /*读入阶数*/

for( i = 0; i < n; i++) /*此处2次循环将行列式存入数组中*/
for( j = 0; j < n; j++)
scanf("%d", &a[i][j]);

printf("%d\n", Fun( n, a ) );

}

/*以下为计算行列式值的递归函数——按行列式的第一列展开*/

int Fun(int n,int a[MAX][MAX])
{
int i=0, j=0, c=0; /*i,j为行与列,c为数组b的行*/

int b[MAX][MAX]={{0}};/*定义数组b并初始化*/

int p=0, q=0;/*p,q为中间变量*/
int sum=0;/*sum为行列式的值*/

if(n == 1)
return a[0][0];

for(i=0;i<n;i++)/*此处大循环实现将余子式存入数组b中*/

{
for(c=0;c<n-1;c++)
{
if(c<i) /*借助c判断每行的移动方法*/
p=0;

else
p=1;

for(j=0;j<n-1;j++)
{
b[c][j]=a[c+p][j+1];
}
}
if(i%2==0) q=1;
else q=(-1);

sum=sum+a[i][0]*q*Fun(n-1,b);
}
return sum;
}
晨之子
2008-10-29 · TA获得超过979个赞
知道小有建树答主
回答量:457
采纳率:0%
帮助的人:0
展开全部
只通过将一行加上或者减去另一行的若干倍的操作,将行列式变换成一个三角阵,然后对角线元素乘积就是行列式的值
具体操作过程可以是高斯消元,如果是整数行列式又不想损失精度可以写成辗转相除高斯消元
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wuleiwuchui1
2008-10-29
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
1 2 3
4 5 6
7 8 9
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
icelemon1314
2008-10-29 · TA获得超过131个赞
知道答主
回答量:237
采纳率:0%
帮助的人:149万
展开全部
行列式是什么东西 都忘了 恩举个例子吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式