/*本矩阵运算系统可以完成矩阵的加、减、乘法,但是只限于方阵*/
#include<stdio.h>
#include<math.h>
/*--------------------全局变量定义-------------------------*/
int n,m,c=0;
int a[100][100],b[100][100];
int fc[100][100];
/*--------------------函数声明-----------------------------*/
void print();
void print_sub();
void input_marry();
void add_marry();
void sub_marry();
void mut_marry();
/*------------------主函数-----------------*/
void main()
{
print();
scanf("%d",&c);
while(c!='\0')
{
if(c==1) {input_marry();}
if(c==2) {add_marry();}
if(c==3) {sub_marry();}
if(c==4) {mut_marry();}
if(c==0) {c='\0';}
printf("请选择运算:\n\n");
scanf("%d",&c);
}
}
/*----------------打印函数------------------*/
void print()
{
printf("
矩阵运算管理系统
\n");
printf("------------------------------------\n");
printf("1 输入矩阵\n");
printf("2 矩阵相加\n");
printf("3 矩阵相减\n");
printf("4 矩阵相乘\n");
printf("0 退出系统\n");
printf("------------------------------------\n");
printf("请选择:\n\n");
}
/*---------------矩阵输入-----------------------*/
void input_marry()
{
int i,j;
printf("请输入矩阵的维数\n\n");
scanf("%d",&n);
m=n*n;
/*---------------第一个矩阵输入-----------------*/
printf("请输入第一个矩阵a(共有%4d个元素):\n\n",m);
do
{
m--;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}while(m<0);
/*----------------打印第一个矩阵---------------*/
printf("您输入的矩阵a=\n\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("%10d",a[i][j]);
if(j==n-1)printf("\n");
}
/*---------------第二个矩阵输入-----------------*/
m=n*n;
printf("请输入第二个矩阵b(共有%4d个元素):\n\n",m);
do
{
m--;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&b[i][j]);
}
}while(m<0);
/*----------------打印第二个矩阵---------------*/
printf("您输入的矩阵b=\n\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("%10d",b[i][j]);
if(j==n-1)printf("\n");
}
print_sub();
}
/*----------------矩阵加法运算-----------------*/
void add_marry()
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ fc[i][j]=0;
fc[i][j]=a[i][j]+b[i][j];
}
printf("矩阵和为:\n\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("%10d",fc[i][j]);
if(j==n-1)printf("\n");
}
print_sub();
}
/*----------------矩阵减法运算-----------------*/
void sub_marry()
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ fc[i][j]=0;
fc[i][j]=a[i][j]-b[i][j];
}
printf("矩阵差为:\n\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("%10d",fc[i][j]);
if(j==n-1)printf("\n");
}
print_sub();
}
/*----------------矩阵乘法运算-----------------*/
void mut_marry()
{
int k,i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{ fc[i][j]=0;
for (k=0;k<n;k++)
fc[i][j]+=a[i][k]*b[k][j];
}
printf("矩阵积为:\n\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("%10d",fc[i][j]);
if(j==n-1)printf("\n");
}
print_sub();
}
/*-------------------子打印函数-----------------*/
void print_sub()
{
printf("\n----------------------------------------------\n");
printf("\n2 矩阵相加;3 矩阵相减;4 矩阵相乘;0 退出系统\n");
printf("\n----------------------------------------------\n");
}