大一刚学了c和线性代数,尝试一下写个行列式求值程序
#include<stdio.h>
#include<math.h>
int main(){
int det(int b[][10],int x); //定义求行列式函数
int a[10][10]; //定义一个固定数组
int n,i=0,j=0,l;
printf("输入行列式阶数\n");
scanf("%d",&n);
printf("输入行列式元素空格隔开\n")
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
l=det(a,n);
printf("%d",l);
}
int det(int b[10][10],int x){
int i=0,j=0,s=0,k=0;
int c[10][10]; //用c数组来表示余子列
if(x==1)
s=b[0][0];
else{
for(j=0;j<x;j++){
for(i=0;i<x-1;i++){
for(k=0;k<x-1;k++){
if(k<j)c[i][k]=b[i+1][k];
if(k>=j)c[i][k]=b[i+1][k+1];
}
}
s+=pow(-1,j)*b[0][j]*det(c,x-1); //递归算法求出值
}
}
return(s);
}
更多推荐
c语言计算行列式
发布评论