利用矩阵相乘公式cij= aik*bkj,编程计算并输出m×n阶矩阵A和n×m阶矩阵B之积。其中,m和n从键盘输入,m和n的值不超过6,否则提示用户重新输入,如果输入非法字符也提示用户重新输入。要求按如下函数原型编写程序: /* 函数功能:计算m×n阶矩阵A和n×m阶矩阵B之积,结果存于二维数组c中 */ void MultiplyMatrix(int a[ROW][COL], int b[COL][ROW], int c[ROW][ROW], int m, int n); /* 函数功能:输出m×m阶矩阵a中的元素 */ void PrintMatrix(int a[ROW][ROW], int m); **输入m和n的输入提示信息:"Input m, n:" **输入m和n的输入格式:"%d,%d" **输入矩阵元素的输入提示信息:"Input %d*%d matrix a:\n" **输入矩阵元素的输入格式: "%d" **输出提示信息:"Results:\n" **输出格式:"%6d" 程序运行示例: Input m, n:7,a↙ Input m, n:7,8↙ Input m, n:2,3↙ Input 2*3 matrix a: 1 2 3↙ 4 5 6↙ Input 3*2 matrix b: 1 2↙ 3 4↙ 5 6↙ Results: 22 28 49 64 注意: (1)不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程。 (2)用标准C语言编程,所有变量必须在第一条可执行语句前定义。
时间: 2023-07-16 08:14:20 浏览: 702
```
#include <stdio.h>
#define ROW 6
#define COL 6
void MultiplyMatrix(int a[ROW][COL], int b[COL][ROW], int c[ROW][ROW], int m, int n);
void PrintMatrix(int a[ROW][ROW], int m);
int main() {
int m, n;
int a[ROW][COL], b[COL][ROW], c[ROW][ROW];
// 输入m和n
printf("Input m, n:");
while (scanf("%d,%d", &m, &n) != 2 || m > 6 || n > 6 || m <= 0 || n <= 0) {
printf("Invalid input, please input again:");
while (getchar() != '\n');
}
// 输入矩阵a
printf("Input %d*%d matrix a:\n", m, n);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
// 输入矩阵b
printf("Input %d*%d matrix b:\n", n, m);
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &b[i][j]);
}
}
// 计算矩阵积
MultiplyMatrix(a, b, c, m, n);
// 输出结果
printf("Results:\n");
PrintMatrix(c, m);
return 0;
}
void MultiplyMatrix(int a[ROW][COL], int b[COL][ROW], int c[ROW][ROW], int m, int n) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
c[i][j] = 0;
for (int k = 0; k < n; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
}
void PrintMatrix(int a[ROW][ROW], int m) {
for (int i = 0; i < m; i++) {
for (int j = 0; j < m; j++) {
printf("%6d", a[i][j]);
}
printf("\n");
}
}
```
阅读全文