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

C#实现三位数统计代码始终输出0的错误排查

错误原因

你的代码始终输出0,是两个问题导致的:

  • 类型错误:将数字转为字符串后,通过索引取到的I[0]、I[1]、I[2]是char类型,存储的是对应数字字符的ASCII编码值(比如字符'0'对应ASCII码48,'1'对应49),直接用这些编码值做乘法运算、和字符做相等判断,永远不可能满足条件。
  • 数位顺序混淆:字符串的0号索引对应三位数的最高位(百位),2号索引对应最低位(个位),你调试打印时把三个数位的顺序写反了,虽然这个问题不影响两两乘积的判断,但属于逻辑疏漏。
修复方法

最稳妥的实现方式是直接通过数学运算拆分三位数的百位、十位、个位,从根源上避免字符类型转换的坑,修复后的代码如下:

using System;

class Program
{
  public static void Main (string[] args) 
  {
    int Total = 0;
    for (int i = 100; i < 1000; i++)
    {
      // 数学拆分直接得到整数类型的三个数位
      int hundreds = i / 100;    // 百位
      int tens = (i / 10) % 10;  // 十位
      int units = i % 10;        // 个位
      
      // 判断是否存在两个数位的乘积等于第三个数位
      if (units == tens * hundreds 
          || tens == hundreds * units 
          || hundreds == tens * units)
      {
        Total++;
      }
    }
    Console.WriteLine("the total is");
    Console.WriteLine(Total);
  }
}
运行说明

上述代码运行后最终统计得到符合要求的三位数共52个,完全匹配你给出的判定规则:比如248满足2*4=8、933满足3*3=9,都会被正确计入统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:39:19