#include<stdio.h>

#include<math.h>

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

int main()

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

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

void adgujate_matrix(int s[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]);

b[i][j]=a[i][j];

}//右对齐输出矩阵

printf("\n");}

printf("该矩阵的伴随矩阵是;:\n");

adgujate_matrix(b,n);//调用伴随矩阵函数

printf("该矩阵的行列式为: %d\n",row_col_times(a,n));//调用行列式乘积函数

return 0;

}

int 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];//最重要的操作

}

}

return 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;

}

void adgujate_matrix(int s[N][N],int n)

{

int b[n][n],c[N][N],f[n][n];

int i,j,k,l,a,e,g=1;

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

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

f[i][j]=s[i][j];//赋值防止改变原矩阵

for(j=0;j<n;j++)//依次找元素

{

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

{

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

for(l=j;l<n-1;l++)

{

s[k][l]=s[k][l+1];

//右边往左挪

}

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

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

{

s[k][l]=s[k+1][l];

//下边往上挪

}

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

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

{

c[k][l]=s[k][l];

}

if((i+j)%2==1)

g=-1;

printf("%3d",row_col_times(c,n-1)*g);

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

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

s[a][e]=f[a][e];

g=1;

}

printf("\n");

}

}

最新文章

  1. Go收藏
  2. 安装Portal for ArcGIS时如何正确配置HTTPS证书
  3. javascript DOM对象
  4. 关于PHP HTML &lt;input type=&quot;file&quot; name=&quot;img&quot;/&gt;上传图片,图片大小,宽高,后缀名。
  5. 去掉NavigationBar底部的黑线
  6. Python并发与并行的新手指南
  7. Careercup - Facebook面试题 - 5998719358992384
  8. JDBC事务控制管理
  9. Java SE 6 新特性: 编译器 API
  10. Web之CSS开发技巧: CSS @media
  11. JavaWeb学习笔记--HttpServletRequest、HttpServletResponse对象常用方法
  12. openStack开源云repo db local or on-line 实战部署之Ruiy王者归来
  13. linux内核之网络协议栈
  14. Delphi使用Zint生成QR二维条码(zint.dll)
  15. npm 如何安装npm包
  16. java基础中this,super
  17. jenkins centos slave起不来报错The SSH key presented by the remote host does not match the key saved in the Known Hosts file against this host. Connections to this host will be denied until the two keys mat
  18. SPOJ COT Count on a tree(树上主席树 + LCA 求点第k小)题解
  19. Android包管理机制(一) PackageInstaller的初始化
  20. 遍历map中的内容

热门文章

  1. centos7 搭建svn服务
  2. advance shading--光源的类型
  3. python pip 代理设置
  4. 查看linux服务器状态常用命令
  5. 关闭Found duplicated code
  6. android4.2 高用zing拍照后,返回其它页面操作时,主线程关掉或程序退出的问题解决
  7. 在ASP.NET Core2上操作MongoDB就是能这么的简便酷爽(自动完成分库分表)
  8. C# superGridControl 样式设置、加载数据、获取数据
  9. Devexpress treelist 控件属性大全
  10. 记开发个人图书收藏清单小程序开发(六)Web开发