/*本矩阵运算系统可以完成矩阵的加、减、乘法,但是只限于方阵*/
#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");
}