C++程序: 将两个给定的矩阵(3*3)相乘得到另一个距阵并将其打印出来。 要求: (1)从键盘输入两个矩阵,并输出结果矩阵。矩阵的输入输出要求行列对齐。 (2)把矩阵相乘写成函数形式,在主函数中完成矩阵的输入输出。 (3)对下标越界作出异常处理。
时间: 2023-05-23 20:06:12 浏览: 253
A:
```c
#include <stdio.h>
#include <stdlib.h>
#define ROW 3
#define COL 3
void matrixMultiplication(int a[][COL], int b[][COL], int c[][COL]) {
int i, j, k;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
c[i][j] = 0;
for (k = 0; k < COL; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
}
int main() {
int a[ROW][COL], b[ROW][COL], c[ROW][COL];
int i, j;
printf("请输入第一个矩阵:\n");
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
scanf("%d", &a[i][j]);
}
}
printf("请输入第二个矩阵:\n");
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
scanf("%d", &b[i][j]);
}
}
matrixMultiplication(a, b, c);
printf("两个矩阵相乘的结果是:\n");
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
printf("%-5d", c[i][j]);
}
printf("\n");
}
return 0;
}
```
对于下标越界,可以在函数内部进行判断和处理:
```c
void matrixMultiplication(int a[][COL], int b[][COL], int c[][COL]) {
int i, j, k;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
c[i][j] = 0;
for (k = 0; k < COL; k++) {
if (i >= ROW || j >= COL || k >= COL) {
printf("矩阵下标越界!\n");
return;
}
c[i][j] += a[i][k] * b[k][j];
}
}
}
}
```
阅读全文