#include stdiohint main int Ra Ca Rb Cb; scanfd d &Ra &Ca; int ARaCa; for int i = 0; i Ra; i++ for int j = 0; j Ca; j++ scanfd &Aij; scanfd d &Rb &Cb;
#include <stdio.h> int main() { int Ra, Ca, Rb, Cb; // 声明变量Ra, Ca, Rb, Cb,分别表示矩阵A和矩阵B的行数和列数 scanf("%d %d", &Ra, &Ca); // 读取矩阵A的行数和列数 int A[Ra][Ca]; // 声明一个大小为RaCa的二维数组A,表示矩阵A for (int i = 0; i < Ra; i++) { // 遍历矩阵A的每一行 for (int j = 0; j < Ca; j++) { // 遍历矩阵A的每一列 scanf("%d", &A[i][j]); // 读取矩阵A的每个元素的值 } } scanf("%d %d", &Rb, &Cb); // 读取矩阵B的行数和列数 int B[Rb][Cb]; // 声明一个大小为RbCb的二维数组B,表示矩阵B for (int i = 0; i < Rb; i++) { // 遍历矩阵B的每一行 for (int j = 0; j < Cb; j++) { // 遍历矩阵B的每一列 scanf("%d", &B[i][j]); // 读取矩阵B的每个元素的值 } } if (Ca != Rb) { // 如果矩阵A的列数不等于矩阵B的行数,则无法进行矩阵乘法 printf("Error: %d != %d\n", Ca, Rb); // 输出错误信息 return 0; // 程序结束 } int AB[Ra][Cb]; // 声明一个大小为Ra*Cb的二维数组AB,表示矩阵A与矩阵B的乘积 for (int i = 0; i < Ra; i++) { // 遍历矩阵A的每一行 for (int j = 0; j < Cb; j++) { // 遍历矩阵B的每一列 AB[i][j] = 0; // 初始化乘积矩阵AB的每个元素为0 for (int k = 0; k < Ca; k++) { // 遍历矩阵A的每一列或矩阵B的每一行 AB[i][j] += A[i][k] * B[k][j]; // 计算乘积矩阵AB的每个元素的值 } } } printf("%d %d\n", Ra, Cb); // 输出乘积矩阵的行数和列数 for (int i = 0; i < Ra; i++) { // 遍历乘积矩阵的每一行 for (int j = 0; j < Cb; j++) { // 遍历乘积矩阵的每一列 printf("%d", AB[i][j]); // 输出乘积矩阵的每个元素的值 if (j < Cb - 1) { // 如果不是当前行的最后一个元素 printf(" "); // 输出一个空格 } } printf("\n"); // 输出一个换行符 } return 0; // 程序结束
原文地址: https://www.cveoy.top/t/topic/iwHY 著作权归作者所有。请勿转载和采集!