#include<stdio.h>

#include<math.h>

#define N 100 //N比输入的阶数大即可

int main()

{   int n,a[N][N],i,j;

void row_col_times(int b[N][N],int n);

printf("请输入方阵阶数:\n");

scanf("%d",&n);

printf("请输入%d阶的方阵(用空格隔开)\n",n);

for(i=0;i<n;i++)

for(j=0;j<n;j++)

scanf("%d",&a[i][j]);

printf("您输入的%d阶方阵是:\n");

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

{printf("%3d ",a[i][j]);}//右对齐输出矩阵

printf("\n");}

row_col_times(a,n);//调用行列式乘积函数

return 0;

}

void row_col_times(int b[N][N],int n)

{ int change_col(int c[N][N],int n,int i);

int product(int d[N][N],int n,int p);

int i,j,k,p=0;

for(i=0;i<n-1;i++)//i为阶数

{

if(b[i][i]==0)//当对角线元素为零时调换列

{ p=p+change_col(b,n,i);}

for(j=i+1;j<n;j++)//j指列

{

for(k=i+1;k<n;k++)//k指行

b[k][j]=b[k][j]*b[i][i]-b[k][i]*b[i][j];//最重要的操作

}

}

printf("the det of array is:%d",product(b,n,p));//调用对角线乘积+符号函数

}

int change_col(int c[N][N],int n,int i)

{ int temp,j,k,flag=0;

for(k=i;k<n;k++)//k指列

{ if(c[i][k]!=0)

{

for(j=i;j<n;j++)//j指行

{

temp=c[j][i];

c[j][i]=c[j][k];

c[j][k]=temp;//调换列

}

flag++;//列调换符号记录

break;

}

}

return flag;//返回调换符号记录数

}

int product(int d[N][N],int n,int p)

{   int product=1,i;

for(i=0;i<n;i++)

product=product*d[i][i];//对角线乘积

for(i=0;i<n-1;i++)

product=product/pow(d[i][i],n-i-1);//除回来

product=product*pow(-1,p);//乘上列调换符号

return product;

}

/*本程序的构建利用了初等变换下行列式的的不变性

和下三角方阵行列式的公式,并添加了个人的思维方式。

望不吝赐教*/

n阶行列式算法(c程序)的更多相关文章

  1. n阶行列式计算----c语言实现(完结)

    花了半天时间,写了这个n阶行列式计算的程序,应该算是比较优美吧,有很多地方多次做了优化,程序占用内存不是很大,要是说小吧,也不合适,因为里边有一个递归,而且递归的深度还比较深.时间复杂度具体没有细看, ...

  2. C#程序计算N阶行列式的值及N元一次方程组

    C#程序计算N阶行列式的值及N元一次方程组 用了挺长时间自行完成了C#程序计算N阶行列式的值及N元一次方程组.由于自己没有在网上查阅其他资料,所以只能硬着头皮用最朴素的思想和基础的算法进行编程.在给出 ...

  3. 基于上三角变换或基于DFS的行(列)展开的n阶行列式求值算法分析及性能评估

    进入大一新学期,看完<线性代数>前几节后,笔者有了用计算机实现行列式运算的想法.这样做的目的,一是巩固自己对相关概念的理解,二是通过独立设计算法练手,三是希望通过图表直观地展现涉及的两种算 ...

  4. 行列式(三):n阶行列式

    1.数学定义   n阶行列式定义如下: 2.算法实现 函数名: GetValue() 功能:返回一个行列式的值 Private Function GetValue() Dim gValue As Do ...

  5. 迈向高阶:优秀Android程序员必知必会的网络基础

    1.前言 网络通信一直是Android项目里比较重要的一个模块,Android开源项目上出现过很多优秀的网络框架,从一开始只是一些对HttpClient和HttpUrlConnection简易封装使用 ...

  6. 1014 C语言文法定义与C程序的推导过程 程序:冒泡算法C程序(语法树)

    阅读并理解提供给大家的C语言文法文件. 参考该文件写出一个自己好理解版的现实版的完整版的C语言文法. 给出一段C程序,画出用上述文法产生这段C程序的完整语法树. 程序:冒泡算法C程序 点此文字查看原图 ...

  7. java程序员到底该不该了解一点算法(一个简单的递归计算斐波那契数列的案例说明算法对程序的重要性)

    为什么说 “算法是程序的灵魂这句话一点也不为过”,递归计算斐波那契数列的第50项是多少? 方案一:只是单纯的使用递归,递归的那个方法被执行了250多亿次,耗时1分钟还要多. 方案二:用一个map去存储 ...

  8. moand的编程学形式:一个(高阶)类型包办程序的组织--类型关乎复合

    moand的编程学形式:一个(高阶)类型完成程序的组织. 将类型系统的转换与高阶函数进行了融合,相对于链式编程而言. 类型关乎复合 范畴论与箭头的复合有关.但是并非任意两个箭头都可以复合.一个箭头的目 ...

  9. 线代: N阶行列式

    线性变换 将 (x, y) 变成 (2 x + y, x - 3 y) 就叫做线性变换, 这就是矩阵乘法, 用于表示一切线性变换. 几何上看, 把平面上的每个点 (x, y) 都变到 (2 x + y ...

随机推荐

  1. PHP数据结构之五 栈的PHP的实现和栈的基本操作

    栈和队列是两种应用非常广泛的数据结构,它们都来自线性表数据结构,都是“操作受限”的线性表. 栈栈在计算机的实现有多种方式:硬堆栈:利用CPU中的某些寄存器组或类似的硬件或使用内存的特殊区域来实现.这类 ...

  2. css-三边框,外边距和内边距

    <div style="width:100px;height:50px;border: solid black 1px;position: absolute;right: 500px; ...

  3. Tensorflow学习(练习)—使用inception做图像识别

    import osimport tensorflow as tfimport numpy as npimport re from PIL import Imageimport matplotlib.p ...

  4. 3.Hive中查看数据来源文件和具体位置方法

    虚拟列 -- 当 hive 产生了非预期的或 null 的时候,可以通过虚拟列进行诊断,判断哪行数据出现问题 INPUT__FILE__NAME     (输入文件名)map任务读入File的全路径 ...

  5. numpy ndarray 返回 index 问题

    经常遇到需要返回满足条件的index. python中没有which函数,但有列表推导式, 可以实现类似功能 y= np.array([3,2,5,20]) yOut[131]: array([ 3, ...

  6. javascript总结8:JavaScript 类型转换

    1 JavaScript 数据类型转换 1.1 数字类型转字符串 n1 = 10;var n2 =String(n1); 或者 var n3 = n1.toString(n1); 1.2 字符串转数字 ...

  7. Debian7安装后的配置(英文环境chromium浏览器中汉字变成方块的问题)

    原文来自:http://www.programgo.com/article/3272573017/ 1.安装文泉宋体 sudo aptitude install xfonts-wqy sudo apt ...

  8. delphi 数组的使用

    delphi中数组就跟string使用类似,数组分为:动态数组和静态数组 还可根据数据的功能分为:数组(一维数组).二维数组.三维数组...静态数组: 固定长度,内容需要定义时添加.动态数组: 故名思 ...

  9. [转]sessionStorage()和localStorage()的用法

    JS的本地保存localStorage.sessionStorage用法总结: 1. localStorage.sessionStorage是Html5的特性,IE7以下浏览器不支持 为什么要掌握lo ...

  10. Java集合类总结 (三)

    HashSet类 关于HashMap的实现细节 HashMap是用LinkedList实现的,每个list被称为一个桶(bucket),在hashmap中要查找一个元素,首先对传入的key进行散列,并 ...