1 #include<stdio.h> 2 #include<stdlib.h> 3 void main() 4 { 5 void read(int* m,int* n); 6 int* ptable(int m,int n); 7 int* math(int m1,int n1,int n2,int* num_1,int* num_2); 8 void dyjz(int m,int n,int* num_1); 9 int m1=0,n1=0; 10 int m2=0,n2=0; 11 12 read(&m1,&n1); /*读出m*n行列*/ 13 int* num_1=ptable(m1,n1); /*读取行列式1*/ 14 read(&m2,&n2); 15 int* num_2=ptable(m2,n2); /*读取行列式2*/ 16 17 if(m2!=n1){ /*判断正误*/ 18 printf("输入错误"); 19 while(getchar()!='d') 20 getchar(); 21 return; 22 } 23 24 int* num_result=math(m1,n1,n2,num_1,num_2); /*计算并返回结果*/ 25 dyjz(m1,n2,num_result); 26 27 while(getchar()!='d') 28 getchar(); 29 } 30 void read(int* m,int* n) 31 { 32 printf("输入m行\n"); 33 scanf("%d",m); 34 printf("输入n列\n"); 35 scanf("%d",n); 36 } 37 int* ptable(int m,int n) 38 { 39 printf("%d*%d\n",m,n); 40 int* num_1=(int*)malloc(sizeof(int)*m*n); 41 for(int a=0;a<m;a++) 42 for(int b=0;b<n;b++) 43 scanf("%d",num_1+a*n+b); 44 for(int a=0;a<m;a++){ 45 printf("\n"); 46 for(int b=0;b<n;b++) 47 printf("%d ",*(num_1+a*n+b)); 48 } 49 printf("\n"); 50 return (num_1); 51 } 52 int* math(int m1,int n1,int n2,int* num_1,int* num_2) 53 { 54 int* num_result=(int*)malloc(sizeof(int)*m1*n2); 55 int cun=0,cun1=0,cun2=0; 56 for(int a=0;a<m1;a++) 57 for(int b=0;b<n2;b++){ 58 for(int c=0;c<n1;c++){ 59 cun1=*(num_1+a*n1+c); 60 cun2=*(num_2+c*n2+b); 61 cun=cun+cun1*cun2; 62 } 63 *(num_result+a*n2+b)=cun; 64 cun=0; 65 cun1=0; 66 cun2=0; 67 } 68 return(num_result); 69 } 70 void dyjz(int m,int n,int* num_1) /*打印矩阵程序*/ 71 { 72 for(int a=0;a<m;a++){ 73 printf("\n"); 74 for(int b=0;b<n;b++) 75 printf("%d ",*(num_1+a*n+b)); 76 } 77 printf("\n"); 78 }