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

数组连续子序列输出需求与代码结果不符的问题咨询

修正C#代码以输出指定连续子序列

给定数组[10, 20, 30, 40],期望输出的连续子序列为:

10 20 30 40
20 30 40
30 40

你的现有代码存在两个核心问题:

  1. 内层循环仅输出两个元素,没有拼接从起始索引到数组末尾的所有元素
  2. 内层循环的终止条件j < myNum.Length - 1限制了遍历范围,无法触及数组最后一个元素

修改方案1:基础循环拼接

通过外层循环控制子序列的起始索引,内层循环拼接从起始索引到末尾的所有元素,最后去掉末尾多余空格后输出:

class Program
{
    static void Main(string[] args)
    {
        int[] myNum = { 10, 20, 30, 40 };
        // 外层循环遍历起始索引,最后一个起始索引为2(对应子序列30 40)
        for (int i = 0; i < myNum.Length - 1; i++)
        {
            string subSeq = "";
            // 内层循环拼接从i到数组末尾的所有元素
            for (int j = i; j < myNum.Length; j++)
            {
                subSeq += myNum[j] + " ";
            }
            // 移除末尾多余空格后输出
            Console.WriteLine(subSeq.TrimEnd());
        }
    }
}

修改方案2:使用string.Join简化实现

利用C#的string.Join方法直接拼接子数组元素,代码更简洁:

class Program
{
    static void Main(string[] args)
    {
        int[] myNum = { 10, 20, 30, 40 };
        for (int i = 0; i < myNum.Length - 1; i++)
        {
            // C# 8.0+ 支持范围运算符,直接获取从i到末尾的子数组
            Console.WriteLine(string.Join(" ", myNum[i..]));
        }
    }
}

如果使用的是C# 8.0以下版本,可以用Enumerable.Skip替代范围运算符:

Console.WriteLine(string.Join(" ", myNum.Skip(i)));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 06:21:05