c语言计算整数型行列式

 1 #include <stdio.h>
 2
 3 void showDet(int n,int d[n][n]);
 4 int getVal(int n,int d[n][n]);
 5 int getA(int n,int d[n][n],int x,int y);
 6
 7 int main(int argc, char *argv[])
 8 {
 9     do{
10         int n,i,j;
11         printf("请输入行列式的阶数(输入0退出):\n");
12         scanf("%d",&n);
13         if(n==0) break;
14         printf("请输入行列式(空格分隔):\n");
15         int d[n][n];
16         for(i=0;i<n;i++){
17             for(j=0;j<n;j++){
18                 scanf("%d",&d[i][j]);
19             }
20         }
21         printf("\n输入行列式如下:\n");
22         showDet(n,d);
23         printf("\n该行列式的值为:\n%d\n\n\n",getVal(n,d));
24
25     }while(1);
26     return 0;
27 }
28
29 void showDet(int n,int d[n][n]){
30     int i,j;
31     for(i=0;i<n;i++){
32         for(j=0;j<n;j++){
33             printf("%d\t",d[i][j]);
34         }
35         printf("\n");
36     }
37 }
38
39 int getVal(int n,int d[n][n]){
40     if(n == 1) return d[0][0];
41     int i,j,sum=0;
42
43     for(i=0;i<n;i++){
44         sum=sum+d[0][i]*getA(n,d,1,i+1);
45     }
46     return sum;
47 }
48
49 int getA(int n,int d[n][n],int x,int y){
50     int a[n-1][n-1],i,j;
51     for(i=0;i<n;i++){
52         if(i==x-1) continue;
53         for(j=0;j<n;j++){
54             if(j==y-1) continue;
55             else if(i<x-1 && j<y-1){
56                 a[i][j]=d[i][j];
57             } else if(i<x-1 && j>y-1){
58                 a[i][j-1]=d[i][j];
59             }else if(i>x-1 && j<y-1){
60                 a[i-1][j]=d[i][j];
61             }else if(i>x-1 && j>y-1){
62                 a[i-1][j-1]=d[i][j];
63             }
64         }
65     }
66     int t;
67      t = (x+y)%2 == 0 ? 1:-1;
68     return t*getVal(n-1,a);
69 }
时间: 2024-11-08 08:25:03

c语言计算整数型行列式的相关文章

【原创】开源Math.NET基础数学类库使用(15)C#计算矩阵行列式

               本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html 上个月对Math.NET的基本使用进行了介绍,主要内容有矩阵,向量的相关操作,解析数据格式,数值积分,数据统计,相关函数,求解线性方程组以及随机数发生器的相关内容.这个月接着深入发掘Math.NET的各种功能,并对

开源Math.NET基础数学类库使用(15)C#计算矩阵行列式

原文:[原创]开源Math.NET基础数学类库使用(15)C#计算矩阵行列式                本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html 开源Math.NET基础数学类库使用总目录:http://www.cnblogs.com/asxinyu/p/4329737.html 上个月对Math.NET的基本使用进行了介绍,主要内容有矩阵,向量的相关操作,解析数据格式,数值积分,数据统计,相关函数,求解线性方程组

C语言计算圆周率PI的代码

下面的内容段是关于C语言计算圆周率PI的内容. #include "stdio.h" #include "stdlib.h" #define SCALE 10000 #define ARRINIT 2000 void pi_digits(int digits) { int carry = 0; int arr[digits + 1]; for (int i = 0; i <= digits; ++i) arr[i] = ARRINIT; for (int i

使用R语言计算均值,方差等

R语言对于数值计算很方便,最近用到了计算方差,标准差的功能,特记录. 数据准备 height <- c(6.00, 5.92, 5.58, 5.92) 1 计算均值 mean(height) [1] 5.855 2 计算中位数 median(height) [1] 5.92 3 计算标准差 sd(height) [1] 0.1871719 4 计算方差 var(height) [1] 0.03503333 5 计算两个变量之间的相关系数 cor(height,log(height)) [1] 0

C语言学习 - 0006 行列式乘法

1 #include<stdio.h> 2 #include<stdlib.h> 3 void main() 4 { 5 void read(int* m,int* n); 6 int* ptable(int m,int n); 7 int* math(int m1,int n1,int n2,int* num_1,int* num_2); 8 void dyjz(int m,int n,int* num_1); 9 int m1=0,n1=0; 10 int m2=0,n2=0;

[R语言]R语言计算unix timestamp的坑

R+mongo的组合真是各种坑等着踩 由于mongo中的时间戳普遍使用的是unix timestamp的格式,因此需要对每天的数据进行计算的时候,很容易就想到对timestamp + gap对方式来实现每天的时间范围. 但这时候就埋下了一个坑,这个坑就是计算精度的问题. ms级的时间戳长度是12位,R中会识别成1.421112+e12的格式.gap的则是 1000 * 60 * 60 *24 * i,数量级是10^8.两者相加,在取某个i的时候,会出现加出来的数据与下一天的timestamp对不

R语言计算移动平均的方法

移动平均可以使时间序列变平滑,是典型的有序计算问题,其基本算法是:将N个连续的时间序列成员作为一个集合,计算该集合的平均值,并逐项推移该集合.下面用一个例子来说明R计算移动平均的方法. 案例描述: 数据框sales有两个字段:日期和当日销售额,需要计算三日移动平均值.具体算法是:求出前一日.当日.后一日的销售额平均值,并逐日推移.部分源数据如下:     代码: filter(sales$Amount/3, rep(1, 3))     计算结果: 代码解读: R语言可以用函数filter计算移

用c语言计算1/1-1/2+1/3-1/4+1/5-...+1/99-1/100

计算1/1-1/2+1/3-1/4+1/5-...+1/99-1/100. 方法一:计算1/1-1/2+1/3-1/4+1/5-...+1/99-1/100 #include <stdio.h>#include <math.h>main(){    float sum=0.0;     float n=0;     float a=0.0;     for (n=1;n<101;n++)     {          a=pow(-1,n+1);         sum=a/

[C语言]计算圆周率(Pi-X)

Code: 1 #include <stdio.h> 2 int main(){ 3 const ARRSIZE=1010, DISPCNT=1000; //定义数组大小,显示位数 4 //const ARRSIZE=10100, DISPCNT=10000; 5 char x[ARRSIZE], z[ARRSIZE]; //x[0] x[1] . x[2] x[3] x[4] .... x[ARRSIZE-1] 6 int a=1, b=3, c, d, Run=1, Cnt=0,i; 7