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

为什么C#中条件满足时while循环未执行所有符合分支?

参考流程图

流程图1
流程图2

问题分析

你代码的核心问题有三个:

  • 控制输出C的变量用错:你当前用arr[2](第三个输入值)控制输出C的循环次数,输入测试用例5 3 0时arr[2]为0,导致输出C的循环完全不执行。实际应该用第二个输入值arr[1]来控制C的输出次数。
  • 条件判断逻辑错误:你判断arr[2] < 0才输出D和G,但测试用例中arr[2]为0,不满足小于0的条件,导致后续字符完全不输出,应该把判断条件改为arr[2] <= 0。
  • 冗余的嵌套while逻辑:你在分支里写了很多仅执行一次就break的while循环,完全没有实际作用,反而干扰逻辑判断,直接用条件判断输出对应字符即可。

修改后代码

using System;

namespace FlowChart
{
    public class Program
    {
        public static void Main(string[] args)
        {
            string wprowadzoneLiczby = Console.ReadLine();
            int[] arr = Array.ConvertAll(wprowadzoneLiczby.Split(' '), int.Parse); 
                
            while (arr[0] > 0)
            {
                while (arr[1] > 0 && arr[0] > 0)
                {
                    arr[0] -= 1;
                    arr[1] -= 1;
                    Console.Write("C");
                }
                if (arr[2] <= 0)
                {
                    Console.Write("D");
                    Console.Write("G");
                }
                break;
            }
            while (arr[0] < 0)
            {
                Console.Write("E");
                Console.Write("G");
                Console.WriteLine();
                break;
            }
        }
    }
}

验证效果

输入5 3 0时,代码执行逻辑如下:

  1. arr[0]=5>0进入外层循环
  2. 内层循环执行3次,输出3个C,此时arr[0]变为2,arr[1]变为0
  3. 判断arr[2]=0<=0,依次输出D和G
  4. 最终输出结果为CCCDG,完全符合预期,且全程未使用for或goto语句。

内容的提问来源于stack exchange,提问作者Julia Kućmierczyk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:15:04