跳到主要内容

C++ 编程:使用多维数组乘两个矩阵

为了理解这个示例,你应该具备以下 C++ 编程 主题的知识:

要乘两个矩阵,第一个矩阵的列数应该等于第二个矩阵的行数。这个程序会显示错误,直到第一个矩阵的列数等于第二个矩阵的行数为止。

示例:不使用函数的方式乘两个矩阵

#include <iostream>
using namespace std;

int main()
{
int a[10][10], b[10][10], mult[10][10], r1, c1, r2, c2, i, j, k;

cout << "Enter rows and columns for first matrix: ";
cin >> r1 >> c1;
cout << "Enter rows and columns for second matrix: ";
cin >> r2 >> c2;

// 如果第一个矩阵的列数不等于第二个矩阵的行数,
// 让用户重新输入矩阵的大小。
while (c1!=r2)
{
cout << "Error! column of first matrix not equal to row of second.";

cout << "Enter rows and columns for first matrix: ";
cin >> r1 >> c1;

cout << "Enter rows and columns for second matrix: ";
cin >> r2 >> c2;
}

// 存储第一个矩阵的元素。
cout << endl << "Enter elements of matrix 1:" << endl;
for(i = 0; i < r1; ++i)
for(j = 0; j < c1; ++j)
{
cout << "Enter element a" << i + 1 << j + 1 << " : ";
cin >> a[i][j];
}

// 存储第二个矩阵的元素。
cout << endl << "Enter elements of matrix 2:" << endl;
for(i = 0; i < r2; ++i)
for(j = 0; j < c2; ++j)
{
cout << "Enter element b" << i + 1 << j + 1 << " : ";
cin >> b[i][j];
}

// 初始化矩阵 mult 的元素为 0。
for(i = 0; i < r1; ++i)
for(j = 0; j < c2; ++j)
{
mult[i][j]=0;
}

// 乘第一个矩阵 a 和第二个矩阵 b,并将结果存储在数组 mult 中。
for(i = 0; i < r1; ++i)
for(j = 0; j < c2; ++j)
for(k = 0; k < c1; ++k)
{
mult[i][j] += a[i][k] * b[k][j];
}

// 显示两个矩阵乘法的结果。
cout << endl << "Output Matrix: " << endl;
for(i = 0; i < r1; ++i)
for(j = 0; j < c2; ++j)
{
cout << " " << mult[i][j];
if(j == c2-1)
cout << endl;
}

return 0;
}

```**输出**

```cpp
Enter rows and column for first matrix: 3
2
Enter rows and column for second matrix: 3
2
Error! column of first matrix not equal to row of second.

Enter rows and column for first matrix: 2
3
Enter rows and column for second matrix: 3
2

Enter elements of matrix 1:
Enter elements a11: 3
Enter elements a12: -2
Enter elements a13: 5
Enter elements a21: 3
Enter elements a22: 0
Enter elements a23: 4

Enter elements of matrix 2:
Enter elements b11: 2
Enter elements b12: 3
Enter elements b21: -9
Enter elements b22: 0
Enter elements b31: 0
Enter elements b32: 4

输出矩阵:
24 29
6 25

在这个程序中,首先要求用户输入两个矩阵的大小。

第一个矩阵的列数应该等于第二个矩阵的行数才能进行乘法运算。如果不满足这个条件,那么使用 while 循环再次询问矩阵的大小。

然后,要求用户输入两个矩阵,并最终计算并显示两个矩阵的输出结果。

由于程序较长且不易调试,最好通过向函数传递来解决这个程序。

访问此页面了解通过向函数传递数组来实现矩阵乘法