请求解释for循环逻辑,因为它应用于c#阿姆斯特朗数检查器中

本文关键字:阿姆斯特朗 应用于 检查 因为 for 解释 循环 请求 | 更新日期: 2023-09-27 18:05:31

作业提醒!我试图建立一个控制台应用程序,以确定是否给定的整数是阿姆斯特朗数。我在网上找到了一个可行的解决方案,但在花了太多时间分析之后,我仍然不能很好地理解逻辑,无法自己复制它……我确定的两个痛点是:1)我不完全理解Parse方法是如何作用于用户输入的整数的,以及2)for循环的逻辑顺序不是不言自明的(参见下面的代码和我的逻辑描述):

int number, remainder, sum = 0;
        Console.WriteLine("Enter a number: ");
        number = int.Parse(Console.ReadLine());
        for (int i = number; i > 0; i = i / 10)
        {
            remainder = i % 10;
            sum = sum + remainder * remainder * remainder;
        }
        if (sum == number)
        {
            Console.Write("Entered Number is an Armstrong Number");
        }
        else
            Console.Write("Entered Number is not an Armstrong Number");
        Console.ReadLine();

这就是我对for循环逻辑的理解:

  1. 该整数被传递给for循环并赋值给int i//。//
  2. 如果i的值大于0,则将i的值重新分配给i/10//例如:153/10 == 15r3//
  3. 将i/10的余数值赋给int余数//余数= 3//
  4. 计算和为和+余数*余数*余数//例如:sum = 0 + 3 * 3 * 3//
  5. 如果总和等于号码,则打印"输入的号码是阿姆斯特朗号码"。然而,27 !== 153//

我在这里错过了什么?

请求解释for循环逻辑,因为它应用于c#阿姆斯特朗数检查器中

由于这是自我承认的作业,我不打算给你一个完整的答案,而是给你一些指针。

  1. 设置number为字符串变量。然后,您可以使用for循环遍历字符串中的每个字符并对它们执行数学运算。
  2. 使用math.pow来创建您的总和,而不是sum = sum + remainder * remainder * remainder,因为这会假设您总是使用3位数。(提示:int N = number.Length()

辅助链接:

  • math.pow

  • 阿姆斯特朗数字