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

C语言矩阵乘法程序:输入函数存在问题求助

矩阵输入函数的错误修复

存在的问题

  • scanf格式符错误:代码中scanf("&d", &mtrx[x][y]);里的格式符写成了&d,正确的整数输入格式符应该是%d,这个错误会导致无法正确读取输入的整数,甚至引发程序运行异常。
  • 二维数组列数限制:函数参数int mtrx[][10]固定了矩阵的列数为10,如果你的矩阵列数不是10,调用这个函数会出现数组越界等问题,灵活性不足。

修复后的代码(保持原参数形式)

void obtainMatrixElems(int mtrx[][10], int row_elems, int col_elems){
    printf("请输入矩阵元素:\n");
    for(int x = 0; x < row_elems; x++){
        for(int y = 0; y < col_elems; y++){
            printf("输入第%d行第%d列的元素:\n", x+1, y+1);
            scanf("%d", &mtrx[x][y]); // 修正格式符为%d
        }
    }
}

更灵活的版本(支持任意列数)

如果需要处理不同列数的矩阵,可以改用指针实现,摆脱列数固定的限制:

void obtainMatrixElems(int *mtrx, int row_elems, int col_elems){
    printf("请输入矩阵元素:\n");
    for(int x = 0; x < row_elems; x++){
        for(int y = 0; y < col_elems; y++){
            printf("输入第%d行第%d列的元素:\n", x+1, y+1);
            scanf("%d", mtrx + x*col_elems + y);
        }
    }
}

调用时直接传入矩阵的首地址即可,例如:obtainMatrixElems(&matrix[0][0], 3, 4);(假设matrix是3行4列的二维数组)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:35:19