You need to enable JavaScript to run this app. C#控制台应用开发:实现整数stratified数校验与累加值计算
优惠活动
大模型
产品
解决方案
定价
更多

C#控制台应用开发:实现整数stratified数校验与累加值计算

C# Stratified数校验控制台程序(修复冗余输入+实现核心逻辑)

原代码问题

  • 冗余读取3次用户输入(原代码连续调用3次Console.ReadLine()),实际仅需1次输入待校验的目标整数
  • 无输入合法性校验(未处理非数字、负数等无效输入)
  • 未实现Stratified数的核心校验逻辑

Stratified数校验核心逻辑

  • 候选数字d范围为1-9(d=0的累加和仅为0,无实际校验意义)
  • 对每个d生成连位累加序列:d → dd(d10+d)→ ddd(d100+dd)… 逐项累加
  • 累加过程中若和等于目标数,记录对应累加式;若和超过目标数,终止当前d的校验,切换下一个d
  • 所有d遍历完毕无匹配时,判定目标数非Stratified数

完整修复代码

using System;
using System.Text;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入要校验的整数:");
            // 修复冗余输入:仅读取1次输入,添加合法性校验
            string inputStr = Console.ReadLine().Trim();
            if (!int.TryParse(inputStr, out int targetNum) || targetNum <= 0)
            {
                Console.WriteLine("输入无效,请输入大于0的正整数!");
                return;
            }

            bool isStratified = false;
            StringBuilder exprBuilder = new StringBuilder();

            // 遍历所有候选数字d(1-9)
            for (int d = 1; d <= 9; d++)
            {
                int currentSum = 0;
                int currentTerm = 0;
                exprBuilder.Clear();

                // 生成连位项并累加
                while (currentSum < targetNum)
                {
                    // 生成下一个连位项:如d=3时,从3→33→333
                    currentTerm = currentTerm * 10 + d;
                    currentSum += currentTerm;
                    // 拼接累加表达式
                    if (exprBuilder.Length > 0)
                        exprBuilder.Append(" + ");
                    exprBuilder.Append(currentTerm);
                }

                // 校验是否匹配目标数
                if (currentSum == targetNum)
                {
                    isStratified = true;
                    break;
                }
            }

            // 输出结果
            if (isStratified)
                Console.WriteLine($"该数字是Stratified数,对应累加式:{targetNum} = {exprBuilder}");
            else
                Console.WriteLine("该数字不是Stratified数");
        }
    }
}

测试验证

  • 输入36 → 输出36 = 3 + 33
  • 输入861 → 输出861 = 7 + 77 + 777
  • 输入335 → 输出该数字不是Stratified数

内容的提问来源于stack exchange,提问作者Hala Al-khaldy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 15:45:07