#include #include

voidmain()

{inti,j;intdimension;double deterValue=1;double **array,**deterArray, **companionMatrix, *temp;//声明函数

void printfDouble2Dimension(int s, int n, double **array);double deter(int dimension, double **array);void copyDouble2Dimension(int s, int n, double **source, double **dest);void getCompanionMatrix(int dimension, double **array, double **companionMatrix);

printf("请输入方阵的阶数N:");

scanf("%d",&dimension);

array=(double**)malloc(dimension*sizeof(double*));

deterArray=(double**)malloc(dimension*sizeof(double*));

companionMatrix=(double**)malloc(dimension*sizeof(double*));//循环输入方阵

for(i=0;i

{

temp=(double*)malloc(dimension*sizeof(double));

deterArray[i]=(double*)malloc(dimension*sizeof(double));

companionMatrix[i]=(double*)malloc(dimension*sizeof(double));

printf("请输入方阵的第%d行:",i+1);for(j=0;j

scanf("%lf",temp+j);

array[i]=temp;

}//拷贝数组

copyDouble2Dimension(dimension,dimension,array,deterArray);//打印方阵

printf("方阵初等变换之前如下:\n");

printfDouble2Dimension(dimension,dimension,array);

deterValue=deter(dimension,deterArray);

printf("方阵初等变换之后如下:\n");

printfDouble2Dimension(dimension,dimension,deterArray);if(deterValue==0)

{

printf("方阵行列式值为零.\n");

system("pause");return;

}

printf("行列式的值:%.2lf\n",deterValue);//求伴随矩阵

getCompanionMatrix(dimension,array,companionMatrix);//打印伴随矩阵

printf("伴随矩阵如下:\n");

printfDouble2Dimension(dimension, dimension, companionMatrix);

system("pause");

}//求伴随矩阵

void getCompanionMatrix(int dimension, double **array, double **companionMatrix)

{inti,j,k,l,m,n,o;int flag;//标志代数余子式的符号

double **companionTemp;double deter(int dimension,double **array);

companionTemp=(double**)malloc((dimension-1)*sizeof(double*));for(i=0;i

companionTemp[i]=(double*)malloc((dimension-1)*sizeof(double));for(i=0;i

{for(j=0;j

{

flag=(i+j)%2==0?1:-1;for(k=0,m=0;k

{if(k==i)continue;for(l=0,n=0;l

{if(l==j)continue;*(*(companionTemp+m)+n) = *(*(array+k)+l);

n++;

}

m++;

}//第i行,第j列的代数余子式 赋值给第j行,第i列

*(*(companionMatrix+j)+i) = flag * deter(dimension-1,companionTemp);

}

}

}/** calculate the determinant value*/

double deter(int dimension,double **array)

{inti,j,k,l,b;int flag =1;double sum=1;doubletemp;for(i=0,j;i

{

j=i;if(*(*(array+i)+j)==0)

{

b=0;for(k=i+1;k

{if(*(*(array+k)+j)!=0)//找到一行不为0的,然后换行

{for(l=j;l

{

temp=*(*(array+k)+l);*(*(array+k)+l)= *(*(array+i)+l);*(*(array+i)+l)=temp;

}

flag*=-1;

b=1;break;

}

}if(!b)

{return 0;

}

i--;continue;

}for(;j

{if(*(*(array+j+1)+i)==0)continue;

temp= -*(*(array+j+1)+i)/ *(*(array+i)+i);for(k=i;k

}

}for(i=0;i

sum*= *(*(array+i)+i);return sum*flag;

}//打印数组

void printfDouble2Dimension(int s, int n, double **array)

{//printf("%d,%d",s,n);

inti,j;for(i=0;i

{for(j=0;j

{

printf("%6.2lf",*(*(array+i)+j));

}

printf("\n");

}

}//拷贝数组

void copyDouble2Dimension(int s, int n, double **source, double **dest)

{inti,j;for(i=0;i

{for(j=0;j

{*(*(dest+i)+j)=*(*(source+i)+j);

}

}

}

c 语言矩阵求逆算法,矩阵的逆 C 语言 算法一相关推荐

  1. c语言紧凑算法的内存分配,C语言(第二章.1)算法与数据结构A.ppt

    C语言课件(第二章.1)算法与数据结构A资料 课程设置目的 本课程是非计算机专业学生的技术基础课,通过本课程的学习,应使学生掌握传统的结构化程序设计的一般方法,以C为语言基础,培养学生严谨的程序设计思 ...

  2. c语言备忘录算法矩阵链乘,矩阵链乘法(备忘录法)

    /* * @fileMemoMatrixchain.cpp * @briefa solution of martrix chain with memorized way. * @author/Univ ...

  3. c语言求浮点数矩阵的逆程序,逆矩阵求程序!!!谢谢

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 逆矩阵.... #include void inputMatrix(int (*a)[3],int ,int ); void outputMatrix(i ...

  4. c语言 最小值算法,最常用的c语言算法

    最常用的c语言算法 以下是YJBYS整理的关于C语言最常用的算法内容,欢迎学习.希望可以为您带来帮助! 一.基本算法 1.交换(两量交换借助第三者) 例1.任意读入两个整数,将二者的值交换后输出. m ...

  5. fluent算例及利用c语言程序算法,第01章 fluent简单算例17

    第01章 fluent简单算例17 第一章 开始 赵玉新(国防科技大学航天学院) 注意:此文只用于流体力学的教学和科学研究,如若涉及到版权问题请于本人联系. 本章对FLUENT做了大致的介绍,其中包括 ...

  6. 时间片轮转算法程序c语言,时间片轮转算法和优先级调度算法 C语言模拟实现...

    满意答案 真不容易啊,怕是没人弄了! 优先级调度算法程序: #include "stdio.h" #include "stdlib.h" #include &q ...

  7. c语言小学生算法,急求:C语言小学生算法练习软件实现的任务:面向小学生,随机选择两个整数进行加、减、乘、除,要求学生解答。设计内容:1、电...

    共回答了16个问题采纳率:100% #include #include #include #include int sumScore = 0; int corrN = 0;//全局变量 //总的分数 ...

  8. c语言常用算法累加法例题,C语言第三次模拟练习题部分解答.docx

    单项选择 号:13334 若有如下语句 int x=3; do {printf (,,%d\n/,, x-=2) ;}while(! (--x)); 则上面程序段o A.输出的是1 B.输出的是1和- ...

  9. 猴子偷桃c语言编程软件,c语言经典算法——猴子偷桃问题

    题目:海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿 ...

最新文章

  1. pureftpd + pureftp-user-manager 构建磁盘配额,速率限制,web管理ftpserver
  2. UIBezierPath画圆弧的记录
  3. 苹果MAC OS X怎么安装双系统?
  4. highcharts图表高级入门之polar:极地图的基本配置以及一些关键配置说明
  5. 【机器学习】Softmax和Sigmoid
  6. java图片的导出,并压缩
  7. iis mysql cpu_[译]通过IIS Request Filtering解决SQL Server CPU高的问题
  8. tree(nyoj)
  9. 【递归】n个数的全排列
  10. LOUVAIN——社交网络挖掘之大规模网络的社区发现算法
  11. java httpsession_JavaWeb:HttpSession
  12. Excel被锁定,如何解锁
  13. 中文手机评论情感分类系列(三)
  14. u盘启动计算机的几种方式,U盘各种启动模式方法介绍 六种U盘启动模式
  15. SolidWorks宏工具介绍——初识宏工具
  16. win10 批量修改文件权限
  17. H3C交换机SSH登录配置
  18. 抖音死亡计算机在线测,抖音死亡计算器怎么玩?抖音死亡计算器测试入口
  19. ChatGPT将引发大量而普遍的网络安全隐患
  20. GJB 5000B二级-LD领导作用

热门文章

  1. 汇编画图题:存储器扩展(重要)
  2. I/O端口及其寻址方式
  3. Pyinstaller打包附带DLL、图标和压缩EXE方法
  4. HTML5与触摸界面
  5. webservice系统学习笔记8-简单的权限校验
  6. ASP.NET 将Excel导入数据库
  7. 预写式日志 - postgresql之WAL(Write Ahead Log)
  8. Oracle logmnr使用
  9. 你是否还在写try-catch-finally?来使用try-with-resources优雅地关闭流吧
  10. css标准流/非标准流 盒子模型