大一学生自学了c语言,学习离散数学有的灵感,兴趣使然使用c++编写了矩阵的乘法(其实是因为懒不愿意自己算),使用vs2022。
#include<iostream>
#include<iomanip>
using namespace std;
//矩阵的乘法
//将前面矩阵的每一行分别与后面矩阵的列相乘作为结果矩阵的行列。
int main() {
//由于vs中数组[]中无法使用变量,所以只好自己修改。
//(第一个矩阵)a为几行,b为几列。在使用前请将a,b改为自己需要的数字。
//(第二个矩阵)c为几行,d为几列。在使用前请将c,d改为自己需要的数字。
//注意b=c!!!!!!!
const int a = 3;//第一个矩阵的行数。
const int b = 3;//第一个矩阵的列数。
const int c = 3;//第二个矩阵的行数。
const int d = 3;//第二个矩阵的列数。
int first[a][b];//第一个矩阵。
int second[c][d];//第二个矩阵。
int H1, L1, H2, L2;
//H1为第一个矩阵中代表行数的变量,L1为第一个矩阵中代表列数的变量。
//H2为第二个矩阵中代表行数的变量,L2为第二个矩阵中代表列数的变量。
//输入第一个矩阵的循坏函数。
First:
for (H1 = 0; H1 < a; H1++) {
for (L1 = 0; L1 < b; L1++) {
cout << "你现在输入的为第一个矩阵第" << H1 + 1 << "行第" << L1 + 1 << "列的数";
cin >> first[H1][L1];
}
}
//检查第一个矩阵的循环函数.
cout << "请检查您输入的第一个矩阵,如果正确请输入t,错误请输入f" << endl;
for (H1 = 0; H1 < a; H1++) {
for (L1 = 0; L1 < b; L1++) {
cout << setw(5) << first[H1][L1] ;
}
cout << endl;
}
char safe;
cin >> safe;
if (safe == 'f') { goto First; }
//输入第二个矩阵的循坏函数。
Second:
for (H2 = 0; H2 < c; H2++) {
for (L2 = 0; L2 < d; L2++) {
cout << "你现在输入的为第二个矩阵第" << H2 + 1 << "行第" << L2 + 1 << "列的数";
cin >> second[H2][L2];
}
}
//检查第二个矩阵的循环函数.
cout << "请检查您输入的第二个矩阵,如果正确请输入t,错误请输入f" << endl;
for (H2 = 0; H2 < c; H2++) {
for (L2 = 0; L2 < d; L2++) {
cout << setw(5) << second[H2][L2] ;
}
cout << endl;
}
char safe1;
cin >> safe1;
if (safe1 == 'f') { goto Second; }
int result[a][d] = { 0 };//结果函数。
//将两个矩阵相乘的循环函数。
H1 = 0;
while (H1 < a) {
L2 = 0;
while (L2 < d) {
H2 = 0;
L1 = 0;
while (L1 < b) {
if (H2 < c) {
result[H1][L2] += (first[H1][L1] * second[H2][L2]);
L1++;
H2++;
}
else { break; }
}
L2++;
}
H1++;
}
cout << "请查收您的结果矩阵" << endl;
for (H1 = 0; H1 < c; H1++) {
for (L2 = 0; L2 < d; L2++) {
cout << setw(5) << result[H1][L2] ;
}
cout << endl;
}
cout << "感谢您的使用,如果你想再次计算请输入r,退出请输入quit。"<<endl;
char safe2;
cin >> safe2;
if (safe2 == 'r') { return main(); }
else{ return 0; }
}