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

二维矩阵升序行编号输出问题及代码调试咨询

找出二维矩阵中元素升序排列的行编号(C#实现)

你的代码存在几个关键问题,导致无法正确实现需求:

  • 内层循环条件错误:误用了行的长度判断i < A.GetLength(0),实际应该检查当前列的范围,且要留一位给j+1,正确条件是j < A.GetLength(1) - 1
  • 逻辑判断混乱:没有整行的状态标记,而是逐个元素判断就输出,还错误地把元素相等判定为“无符合条件的行”——元素相等并不影响升序(非严格升序场景)
  • 输出逻辑偏离需求:没有记录行号,反而输出单个元素,不符合“输出升序行编号”的目标

下面是修正后的代码,完全实现需求:

// 假设A是已初始化的double类型二维数组
Console.WriteLine("元素按升序排列的行编号:");
bool hasValidRow = false;

// 遍历每一行
for (int row = 0; row < A.GetLength(0); row++)
{
    bool isRowAscending = true;
    // 遍历当前行的元素,到倒数第二个元素为止(避免j+1越界)
    for (int col = 0; col < A.GetLength(1) - 1; col++)
    {
        // 只要有一个元素大于下一个,该行就不是升序
        if (A[row, col] > A[row, col + 1])
        {
            isRowAscending = false;
            break; // 提前终止内层循环,无需检查剩余元素
        }
    }

    // 如果该行符合升序条件,输出行号(这里按日常习惯输出从1开始的编号,要0索引则去掉+1)
    if (isRowAscending)
    {
        Console.WriteLine($"行号:{row + 1}");
        hasValidRow = true;
    }
}

// 所有行遍历完成后,若没有符合条件的行再提示
if (!hasValidRow)
{
    Console.WriteLine("没有元素按升序排列的行");
}

代码关键点说明

  • 用isRowAscending标记当前行的状态,默认假设是升序,一旦发现不符合的元素立即标记并跳出循环,提升执行效率
  • 内层循环严格控制边界,避免数组索引越界异常
  • 统一在整行检查完成后输出行号,最后统一判断是否存在符合条件的行,避免重复输出提示信息
  • 行号可根据需求选择0起始或1起始,代码中默认使用更符合日常认知的1起始编号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:12:40