jiangshangtiyongpascalzuo
```pascal program MatrixMultiplication; uses SysUtils; const MaxN = 100; MaxM = 100; MaxP = 100; MaxQ = 100; type TMatrix = array[1..MaxN, 1..MaxM] of integer; var n, m, p, q: integer; A: TMatrix; B: TMatrix; C: array[1..MaxN, 1..MaxQ] of integer; i, j, k: integer; begin // 读取矩阵 A 的行数 n 和列数 m read(n, m); // 读取矩阵 A 的元素 for i := 1 to n do for j := 1 to m do read(A[i, j]); // 读取矩阵 B 的行数 p 和列数 q read(p, q); // 读取矩阵 B 的元素 for i := 1 to p do for j := 1 to q do read(B[i, j]); // 初始化结果矩阵 C for i := 1 to n do for j := 1 to q do C[i, j] := 0; // 进行矩阵相乘 for i := 1 to n do for j := 1 to q do for k := 1 to m do C[i, j] := C[i, j] + A[i, k] * B[k, j]; // 输出结果矩阵 C for i := 1 to n do begin for j := 1 to q do begin if j > 1 then write(' '); write(C[i, j]); end; writeln; end; end. ``` 代码解释: 1. 常量和类型定义: - 定义了几个常量 `MaxN`、`MaxM`、`MaxP`、`MaxQ` 来表示矩阵可能的最大行数和列数。 - 定义了类型 `TMatrix` 为一个二维数组类型,用于存储矩阵。 2. 变量声明: - `n`、`m` 表示矩阵 `A` 的行数和列数,`p`、`q` 表示矩阵 `B` 的行数和列数。 - `A` 和 `B` 是存储输入矩阵的二维数组,`C` 是存储结果矩阵的二维数组。 - `i`、`j`、`k` 作为循环控制变量。 3. 输入矩阵: - 先读取矩阵 `A` 的行数 `n` 和列数 `m`,然后通过嵌套循环读取矩阵 `A` 的元素。 - 接着读取矩阵 `B` 的行数 `p` 和列数 `q`,再用嵌套循环读取矩阵 `B` 的元素。 4. 初始化结果矩阵: - 使用嵌套循环将结果矩阵 `C` 的所有元素初始化为 0。 5. 矩阵相乘: - 通过三层嵌套循环完成矩阵相乘操作,外层两层循环遍历结果矩阵 `C` 的每个位置,内层循环计算对应位置的元素值。 6. 输出结果矩阵: - 使用嵌套循环遍历结果矩阵 `C`,按行输出结果,元素之间用空格分隔,每行结束后换行。 [2025-12-09 12:31:32 | AI问答 | 791点数解答]