You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

矩形矩阵乘法C程序无结果输出问题及代码修正请求

修正后的矩阵乘法C程序

你的代码存在三个关键问题导致无法正确输出结果矩阵,以下是问题分析和修复后的完整代码:

问题分析

  1. 未初始化结果矩阵:result数组在累加乘积和之前没有被初始化为0,计算时会使用内存中的垃圾值,导致结果错误。
  2. 结果矩阵打印使用未初始化变量:打印循环中用到的r和c从未赋值,而结果矩阵的正确维度应为第一个矩阵的行数r1和第二个矩阵的列数c2。
  3. 缺少乘法合法性检查:未验证第一个矩阵的列数是否等于第二个矩阵的行数,这是矩阵乘法的必要前提,不满足时运算无意义。

修复后的代码

#include<stdio.h>
int main()
{
    int i,j,r1,c1,r2,c2,k,a[10][10],b[10][10],result[10][10];
    
    printf("\n 输入第一个矩阵的行数和列数(1到10之间):");
    scanf("%d%d",&r1,&c1);
    
    printf("\n 输入第二个矩阵的行数和列数(1到10之间,注意第一个矩阵的列数需等于第二个矩阵的行数才能相乘):");
    scanf("%d%d",&r2,&c2);
    
    // 检查矩阵乘法合法性
    if(c1 != r2){
        printf("\n 无法进行矩阵乘法:第一个矩阵的列数必须等于第二个矩阵的行数!");
        return 1;
    }
    
    printf("\n 输入第一个矩阵的元素:");
    for(i=0;i<r1;i++){
        for(j=0;j<c1;j++){
            scanf("%d",&a[i][j]);
        }
    }
    
    printf("\n 第一个矩阵:\n");
    for(i=0;i<r1;i++){
        for(j=0;j<c1;j++){
            printf("\t%d",a[i][j]);
        }
        printf("\n");
    }
    
    printf("\n 输入第二个矩阵的元素:");
    for(i=0;i<r2;i++){
        for(j=0;j<c2;j++){
            scanf("%d",&b[i][j]);
        }
    }
    
    printf("\n 第二个矩阵:\n");
    for(i=0;i<r2;i++){
        for(j=0;j<c2;j++){
            printf("\t%d",b[i][j]);
        }
        printf("\n");
    }
    
    // 初始化结果矩阵为0
    for(i=0;i<r1;i++){
        for(j=0;j<c2;j++){
            result[i][j] = 0;
        }
    }
    
    // 矩阵乘法计算
    for(i=0;i<r1;i++){
        for(j=0;j<c2;j++){
            for(k=0;k<c1;k++){
                result[i][j] += a[i][k] * b[k][j];
            }
        }
    }
    
    // 打印结果矩阵
    printf("\n 两个矩阵相乘的结果:\n");
    for(i=0;i<r1;i++){
        for(j=0;j<c2;j++){
            printf("\t%d",result[i][j]);
        }
        printf("\n");
    }
    return 0;
}

修复说明

  • 初始化结果矩阵:在乘法计算前添加嵌套循环,将result所有元素置为0,确保累加从正确的初始值开始。
  • 修正打印循环变量:将打印结果时的r和c替换为r1和c2,匹配结果矩阵的实际维度。
  • 添加合法性检查:读取矩阵维度后立即验证c1 == r2,不满足时输出错误信息并终止程序,避免无效运算。

内容的提问来源于stack exchange,提问作者GrowDiverse SARL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 02:17:16