请求解释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循环逻辑的理解:
- 该整数被传递给for循环并赋值给int i//。//
- 如果i的值大于0,则将i的值重新分配给i/10//例如:153/10 == 15r3//
- 将i/10的余数值赋给int余数//余数= 3//
- 计算和为和+余数*余数*余数//例如:sum = 0 + 3 * 3 * 3//
- 如果总和等于号码,则打印"输入的号码是阿姆斯特朗号码"。然而,27 !== 153//
我在这里错过了什么?
由于这是自我承认的作业,我不打算给你一个完整的答案,而是给你一些指针。
- 设置
number
为字符串变量。然后,您可以使用for
循环遍历字符串中的每个字符并对它们执行数学运算。 - 使用
math.pow
来创建您的总和,而不是sum = sum + remainder * remainder * remainder
,因为这会假设您总是使用3位数。(提示:int N = number.Length()
辅助链接:
-
math.pow
-
阿姆斯特朗数字