2015-08-28 81 views
-5

我不明白這個程序是如何工作的,如果原始和設置爲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(); 
     } 
    } 
} 
+3

'r'從號碼中取出數字。並將其添加到總和中。混亂在哪裏? –

+2

歡迎來到[SO],請閱讀[FAQ]和[問]。祝你好運! –

回答

3

num =

  1. num!= 0爲真,則進入while
    • r = num%10 = 123%10 = ,
    • num = num/10 = 123/10 = ,
    • sum = sum + r = 0 + 3 =
  2. num!= 0爲真,則進入while
    • r = num%10 = 12%10 = ,
    • num = num/10 =一十分之一十二= ,
    • sumsum = + r = 3 + 2 = 5
  3. num!= 0爲真,則進入while
    • r = num%10 = 1%10 = ,
    • num = num/10 = 1/10 = ,
    • sum = sum + r = 5 + 1 = 6
  4. num!= 0爲假,則跳過while
8

不要忘記,這是一個循環。 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的結果中,並完全忽略先前的總和。

+0

再加上一個,帶有逆轉的預感...... –

+0

再加上一個爲我的偶像:) –

1

在循環中,通過一個數字的數目遞減在從右側的時間。

的步驟是:

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

顯然,這不是你是什麼之後。

相關問題