矩阵的乘法

大一学生自学了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; }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值