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

多案例N×N矩阵连乘输出格式异常问题的修复方案咨询

修复多组矩阵乘法案例的输出错误

问题描述

编写的程序用于实现3个N×N矩阵相乘并输出结果,支持多组案例,每组可自定义矩阵阶数n。但输入两组案例(第一组n=2,第二组n=3)时,第一组的输出变成3×3矩阵,第三行第三列显示0值。

问题根源

代码中仅使用单个变量n记录矩阵阶数,在处理完第二组案例后,n的值被更新为3。输出第一组案例时,循环条件仍使用这个n=3,导致超出第一组矩阵的实际范围,多打印的位置未被赋值,显示默认的0。

修复方案

需要为每组案例单独存储对应的矩阵阶数,输出时使用该组的阶数控制循环范围。具体改动如下:

  • 新增一个数组n_list[10],用于保存每组案例的矩阵阶数(数组大小可根据最大案例数调整)
  • 在读取每组的n后,将其存入n_list[l]
  • 输出阶段,将循环条件中的n替换为当前案例对应的n_list[l]

修改后的完整代码

#include <stdio.h>

int main(){
    int t, n, i, j, k, l, a[50][50][10], b[50][50][10], c[50][50][10], d[50][50][10], e[50][50][10];
    int n_list[10]; // 新增:存储每组案例的矩阵阶数
    
    scanf ("%d", &t);
    
    for (l=1; l<=t; l++){
        scanf("%d", &n);
        n_list[l] = n; // 保存当前组的阶数
        
        // matrix a
        for (i = 0; i < n; i++) {
            for (j = 0; j < n; j++) {
                scanf("%d", & a[i][j][l]);
            }
        }
        
        // matrix b
        for (i = 0; i < n; i++) {
            for (j = 0; j < n; j++) {
                scanf("%d", & b[i][j][l]);
            }
        }
        
        // matrix c
        for (i = 0; i < n; i++) {
            for (j = 0; j < n; j++) {
                scanf("%d", & c[i][j][l]);
            }
        }
        
        //Multiplication
        for (i = 0; i < n; i++) {
            for (j = 0; j < n; j++) {
                d[i][j][l] = 0;
                for (k = 0; k < n; k++) {
                    d[i][j][l] += a[i][k][l] * b[k][j][l];
                }
            }
        }
        for (i = 0; i < n; i++) {
            for (j = 0; j < n; j++) {
                e[i][j][l] = 0;
                for (k = 0; k < n; k++) {
                    e[i][j][l] += d[i][k][l] * c[k][j][l];
                }
            }
        }
    }
    
    //Printing the product
    for (l=1; l<=t; l++){
        printf ("Case #%d:\n", l);
        // 使用当前组的阶数n_list[l]控制循环
        for (i = 0; i < n_list[l]; i++) {
            for (j = 0; j < n_list[l]; j++) {
                printf("%d ", e[i][j][l]);
            }
            printf("\n");
        }
    }
    
    return 0;
}

关键改动说明

  • n_list数组记录了每组案例的矩阵大小,避免了后续案例覆盖n值导致的输出错误
  • 输出时严格按照当前案例的阶数遍历矩阵,确保只打印对应大小的结果

预期输出效果:
预期输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:50:30