大一刚学了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语言计算行列式