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 }