其实是很简单的代码,叫了翔哥给代码给我改,果断将JAVA改成C++,太简单了。。
我不知道代码是什么意思,贴个记录先。

//matrix multiple opr #include <stdio.h> #include <iostream> using namespace std; #define maxn 500 int n , m , a, b , r , s , A1[maxn][maxn]; int A[maxn][maxn],B1[maxn][maxn] ,B[maxn][maxn]; int R[maxn][maxn]; void conv2() { int e = 0; for(int i=0;i<r;i++) { for(int j=0;j<s;j++) { for(int k=0;k<r;k++) { for(int p=0;p<s;p++) { if(i-k >= 0 && j-p >=0) e = e + A1[k][p] * B1[i-k][j-p]; else if(i-k<0 && j-p>=0) e = e + A1[k][p] * B1[i-k+r][j-p]; else if(i-k>=0&&j-p<0) e = e + A1[k][p] * B1[i-k][j-p+s]; else e = e + A1[k][p] * B1[i-k+r][j-p+s]; } } R[i][j] = e; e = 0; } } } main() { puts("请输入矩阵A的行数与列数 "); scanf("%d %d",&m,&n); for(int i=0;i<m;i++) { for(int j=0;j<n;j++) scanf("%d",&A[i][j]); } puts("请输入矩阵B的行数与列数:"); scanf("%d %d",&a,&b); for(int i=0;i<a;i++) { for(int j=0;j<b;j++) { scanf("%d",&B[i][j]); } } r = m + a -1 ; s = n + b - 1; for(int i=0;i<r;i++) { for(int j=0;j<s;j++) { if(i<m && j<n) A1[i][j] = A[i][j]; else A1[i][j] = 0; } } for(int i=0;i<r;i++) { for(int j=0;j<s;j++) { if(i<a && j<b) B1[i][j] = B[i][j]; else B1[i][j] = 0; } } conv2(); for(int i=0;i<r;i++) { for(int j=0;j<s;j++) { printf("%d ",R[i][j]); } printf(" "); } scanf("%d",&A[0][0]); } /* 5 5 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 3 3 1 2 1 0 2 0 3 1 3 */