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

C语言实现打印矩阵每行最大值代码运行输出异常求助

问题排查与修正方案

现有代码的错误点

  • 类型不匹配错误:int *input3[9] 是指针数组,用来存储整型地址,你直接存入整数值属于非法操作,应改为普通整型数组 int input3[9]。
  • 变量未初始化:Next_Total 声明时未赋初始值,存储的是内存随机垃圾值,后续大小比较逻辑完全失效。
  • 逻辑不匹配需求:你的需求是打印矩阵每行的最大值,但现有代码实际是在计算每行的累加和,和需求完全不符。
  • 累加逻辑错误:即使你要实现「找行和最大的行」的功能,Total 变量在每一行遍历结束后没有重置为0,会把前几行的和累计到当前行的结果中,计算结果完全错误。
  • 输出格式错误:内层循环中每次更新Total就直接打印且没有分隔符,多次输出的数字拼接在一起,就形成了你看到的超长异常数值,本质是多个数字连续输出的视觉效果,不是单次输出的结果。

修正后代码(实现打印每行最大值的需求)

#include<stdio.h>
int main()
{
    int m=3,n=3,k=0,i,j;
    // 修正指针数组为普通整型数组
    int input3[9]={3,6,9,1,4,7,2,8,9};
    int arr[m][n];
    // 给二维数组赋值
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            arr[i][j]=input3[k++];
        }
    }
    // 打印原始矩阵
    printf("原始矩阵:\n");
    for(i=0;i<m;i++){
        for(j=0;j<n;j++){
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
    // 求每行最大值并打印
    printf("每行最大值如下:\n");
    for(i=0;i<m;i++){
        // 每行初始最大值设为行首元素
        int row_max = arr[i][0];
        for(j=1;j<n;j++){
            if(arr[i][j] > row_max){
                row_max = arr[i][j];
            }
        }
        printf("第%d行最大值:%d\n", i+1, row_max);
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 16:24:00