提交时间:2026-04-15 15:18:15

运行 ID: 87324

#include <iostream> using namespace std; // 定义最大维度(因n,m,k<100,设105足够) const int MAX = 105; int main() { int n, m, k; // 1. 输入矩阵维度:A(n行m列),B(m行k列) cin >> n >> m >> k; // 定义三个矩阵并初始化(默认值0) int a[MAX][MAX] = {0}; int b[MAX][MAX] = {0}; int c[MAX][MAX] = {0}; // 2. 输入矩阵A(n行m列) for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { cin >> a[i][j]; } } // 3. 输入矩阵B(m行k列) for (int i = 0; i < m; i++) { for (int j = 0; j < k; j++) { cin >> b[i][j]; } } // 4. 核心:计算矩阵C = A × B // 遍历C的每一行i for (int i = 0; i < n; i++) { // 遍历C的每一列j for (int j = 0; j < k; j++) { // 计算C[i][j]:A第i行 与 B第j列 对应相乘求和 for (int p = 0; p < m; p++) { c[i][j] += a[i][p] * b[p][j]; } } } // 5. 输出矩阵C(n行k列) for (int i = 0; i < n; i++) { for (int j = 0; j < k; j++) { // 元素间用空格分隔 cout << c[i][j]; // 不是最后一列,加空格(优化输出格式) if (j != k - 1) { cout << " "; } } // 每行结束换行 cout << endl; } return 0; }