c#请解释它为什么有效,
我不明白这个程序是如何工作的,如果原始和设置为0
,然后r(remainder)
被加到总和0
。这两位数字的正确和是多少?我觉得这应该是这样的... sum = num + r;
c#请解释它为什么有效,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Application
{
class MainClass
{
public static void Main (string[] args)
{
int num, sum = 0, r;
Console.WriteLine("Enter a Number : ");
num = int.Parse(Console.ReadLine());
while (num != 0)
{
r = num % 10;
num = num/10;
**sum = sum + r;**
}
Console.WriteLine("Sum of Digits of the Number : "+sum);
Console.ReadLine();
}
}
}
即num
=
-
num
!= 0为真,则进入while
-
r
=num
%10 = 123%10 = , -
num
=num
/10 = 123/10 = , -
sum
=sum
+r
= 0 + 3 =
-
-
num
!= 0为真,则进入while
-
r
=num
%10 = 12%10 = , -
num
=num
/10 =一十分之一十二= , -
sum
sum
= +r
= 3 + 2 = 5
-
-
num
!= 0为真,则进入while
-
r
=num
%10 = 1%10 = , -
num
=num
/10 = 1/10 = , -
sum
=sum
+r
= 5 + 1 = 6
-
-
num
!= 0为假,则跳过while
不要忘记,这是一个循环。 sum
在第一次迭代中为0,但在第二次迭代中它包含最后一位数字的值。
所以想象你有若干195692.这将经过7次迭代:
num sum (before) r sum (after)
195692 0 2 2
19569 2 9 11
1956 11 6 17
195 17 5 22
19 22 9 31
1 31 1 32
所以结果是32,其是1 + 9 + 5 + 6 + 9 + 2
请注意,您可以通过在代码中添加一些诊断行来自行生成该表格,或者您可以通过在代码中进行调试以查看其“实时”工作方式,在笔和纸上生成该表格。
如果您有sum = r + num
,那么会将最后一位数字添加到数字除以10的结果中,并完全忽略先前的总和。
再加上一个,带有逆转的预感...... –
再加上一个为我的偶像:) –
在循环中,通过一个数字的数目递减在从右侧的时间。
的步骤是:
R = NUM%10
百分比符号是模量,其中,你会意识到,这是由第二除以第一数量的剩余部分数字,在模数为10的情况下,这等于最后一位数字。
NUM = NUM/10
这是一个简单的除法,因为我们正在处理一个整数(即没有小数位),我们通过10分,那么我们就失去了最后一位。
总和=总和+ R
这增加了剩余到我们的总的量。
假设我们先从数目NUM = 987,则迭代将工作像这样:
NUM = 987,R = 987%10 = 7,NUM =一十分之九百八十七= 98,总和= 0 + 7 = 7
NUM = 98,R = 98%10 = 8,NUM =一十分之九十八= 9,和= 7 + 8 = 15
NUM = 9,R = 9%10 = 9,num = 9/10 = 0,sum = 15 + 9 = 24
So su米最终被0 + 7 + 8 + 9 = 24。
等效如果改变了求和线总结= NUM + R,迭代将是:
总和= 98 + 7 = 105
总和= 9 + 8 = 17
总和= 0 + 9 = 9
显然,这不是你是什么之后。
'r'从号码中取出数字。并将其添加到总和中。混乱在哪里? –
欢迎来到[SO],请阅读[FAQ]和[问]。祝你好运! –