📄 nn.c
字号:
#include<stdio.h>
#define N 3
int js(a,n)
int a[N][N],n;
{
int b[N][N];
int h,i,j,t,total=0;
if(n==2)
{
total=a[0][0]*a[1][1]-a[0][1]*a[1][0];
}
else if(n>2)
for(h=0;h<n;h++)
{
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1;j++)
if(j<h)
b[i][j]=a[i+1][j];
else
b[i][j]=a[i+1][j+1];
}
if(h%2==0)
t=a[0][h]*js(b,n-1);
else
t=(-1)*a[0][h]*js(b,n-1);
total=total+t;
}
return total;
}
void dsyzs(s,n,e)
int s[N][N],n;
{
int k[N][N];
float f[N][N];
float *g,temp;
int i,j,z,q,x,y;
g=&f[0][0];
for(i=0;i<n;i++)
{
x=i;
for(j=0;j<n;j++)
{
y=j;
for(z=0;z<n-1;z++)
{
for(q=0;q<n-1;q++)
if(q>=y&&z<x)
k[z][q]=s[z][q+1];
else if(z>=x&&q<y)
k[z][q]=s[z+1][q];
else if(z>=x&&q>=y)
k[z][q]=s[z+1][q+1];
else
k[z][q]=s[z][q];
}
f[i][j]=js(k,n-1);
//printf("%f\n",f[i][j]);
}
}
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(((i+j)%2)!=0&&f[i][j]!=0)
f[i][j]=-f[i][j];
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{
temp=f[i][j];
f[i][j]=f[j][i];
f[j][i]=temp;
}
printf("伴随矩阵:\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%f ",f[i][j]);
printf("\n");
}
printf("逆矩阵:\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
f[i][j]=f[i][j]/e;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%f ",f[i][j]);
printf("\n");
}
}
main()
{
int mat[N][N];
int *p,t,i,j,r;
float temp;
float f[N][N];
p=&mat[0][0];
printf("请输入一个%dX%d的矩阵A:\n",N,N);
for(p=&mat[0][0];p<(&mat[0][0])+N*N;p++)
scanf("%d",p);
printf("原矩阵为:\n");
for(p=&mat[0][0];p<(&mat[0][0])+N*N;p++)
{
if((p-(&mat[0][0])+1)%N==0)
printf("%d\n",*p);
else
printf("%d ",*p);
}
t=js(mat,N);
printf("|A|= %d\n",t);
if(t!=0)
dsyzs(mat,N,t);
else
printf("因为|A|=0所以A没有逆矩阵。\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -