📄 matrix.c
字号:
/* Note:Your choice is C IDE */
#include "stdio.h"
#include<stdlib.h>
#include<math.h>
#define M1 100
#define M2 100
typedef struct{
int row;
int col;
float d[M1][M2];
}matrix;
void getvalue(matrix *p) /*initial matrix*/
{int i,j;
printf("input the row and column numbers of the matrix:");
scanf("%d%d",&p->row,&p->col);
printf("The matrix[%d]*[%d] is:\n",p->row,p->col);
for(i=0;i<p->row;i++)
for(j=0;j<p->col;j++)scanf("%f",&p->d[i][j]);
}
void print(matrix *p) /*output matrix*/
{int i,j;
for(i=0;i<p->row;i++)
{for(j=0;j<p->col;j++)printf("%f\t",p->d[i][j]);printf("\n");}
}
void trans(matrix *m,matrix *n) /*transfor of matrix*/
{int i,j;
n->col=m->row;
n->row=m->col;
for(i=0;i<m->row;i++)
for(j=0;j<m->col;j++)n->d[j][i]=m->d[i][j];
}
void Mj(matrix *p,matrix *q,int i)
{int j,i1;
q->row=p->row-1;q->col=p->col-1;
for(i1=0;i1<q->row;i1++)
for(j=0;j<p->col;j++){if(j>i-1)q->d[i1][j-1]=p->d[i1][j];
else q->d[i1][j]=p->d[i1][j];}
}
float sign(int x,int y)
{float s;
int sum;
sum=x+y;
if(sum%2)s=-1.0;
else s=1.0;
return s;}
float val(matrix *p) /*return value of matrix*/
{float z=0;float s;
matrix tempm;
int j;
if(p->row==p->col)
{if(p->row==1)z=p->d[0][0];
else for(j=1;j<p->row+1;j++){s=sign(p->row,j);Mj(p,&tempm,j);z=z+p->d[p->row-1][j-1]*s*val(&tempm);}
return z;}
}
void Mij(matrix *p,matrix *q,int x,int y)
{int i,j;
q->row=p->row-1;q->col=p->col-1;
for(i=0;i<p->row;i++)
for(j=0;j<p->col;j++){if(j>y-1)q->d[i][j-1]=p->d[i][j];else q->d[i][j]=p->d[i][j];}
for(i=0;i<p->row;i++)
for(j=0;j<q->col;j++){if(i>x-1)q->d[i-1][j]=q->d[i][j];}
}
void reverse(matrix *p,matrix *q) /*get reverse of matrix*/
{matrix tempm;int i,j;float s,de;
de=val(p);
q->row=p->col;q->col=p->row;
if(p->row==p->col)
{for(i=0;i<p->row;i++)
for(j=0;j<p->col;j++){s=sign(i+1,j+1);Mij(p,&tempm,i+1,j+1);q->d[j][i]=s*val(&tempm)/de;}
}
}
void mul(matrix *m,matrix *n,matrix *q) /*multiply of matrix*/
{int i,j,k;
if(m->col==n->row)
{q->row=m->row;q->col=n->col;
for(i=0;i<q->row;i++)
for(j=0;j<q->col;j++)
{q->d[i][j]=0;
for(k=0;k<m->col;k++)q->d[i][j]+=m->d[i][k]*n->d[k][j];}
}
}
void main()
{matrix m1,m2,m3;
getvalue(&m1);
print(&m1);
printf("%f",val(&m1));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -