行列式求值

2017-12-05 19:33:11来源:CSDN作者:Soul_97人点击

分享

1348: 编程帮你做作业

描述

题目描述:

“遥想多年前烟花满天……”小钢牙同学唱着唱着突然想起了当年还不是大神的时候——

大一刚学线性代数的时候小钢牙学得咬牙切齿钢牙都快撑不住了。因为每次计算行列式的值都算错他想这破玩意题目倒是不难就是算起来一算错就全错了这要遇到十阶八阶的还不把我算死了

幸好当时他找到了组织:ACM协会,跟着谷学长学了点C语言,于是他打算写一个程序来帮助计算一个行列式的值

"独揽月下萤火 照亮一纸寂寞……“小钢牙大神又开始了——

输入:

第一行n表示接下来要输入行列式的阶数,接下来是n*n阶行列式;n=0时,程序终止。

其中,1<=n<=4,你可以认为行列式中只有整数。

输出:

当前行列式的值,每行一个。

样例输入
1
9
2
1 2
3 4
0
样例输出
9

-2

搬运

#include <stdio.h> #include <stdlib.h> #define MAX  9 /*定义最大为9阶行列式*/ int Fun(int n, int a[MAX][MAX] ); /*函数声明*/ int 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:");  while(scanf("%d",&n) && 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;}


相关文章

    无相关信息

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台