2011-09-18 200 views
0

我有一個很難理解下面的代碼:這段代碼的邏輯是什麼?

if ((number % 10)> max) //rem of 10 
{ 
    max = (number % 10); 
} 
number /= 10; 

能否請你幫我這個?

+1

難道你不理解'if'的工作原理或操作員的操作?解釋你想達到什麼。 – Mahesh

+4

那麼你的問題是什麼? –

+0

'%'給出餘數,'number/= 10'與'number = number/10'相同 –

回答

1
  • (number % 10),給出number的餘數除以10
  • (number % 10) > max,表示如果剩餘量大於max

所以,如果餘數是超過max更大,他們做max其餘爲:

 max = (number % 10); 

而且number/=10

number = number/10; //same as number /= 10; 

速記其除以10 number,並保存在number的商。

還有其他的速記在C++以及:

a += x; // a = a + x; 
a -= x; // a = a - x; 
a *= x; // a = a * x; 
a %= x; // a = a % x; //if a and x are integral type, if they're built-in type. 

如果a類型爲類,那麼你可以重載所有這些運營商爲你的類。

3

我猜你發佈的代碼是一個循環體,這樣的:

int max = 0; 
while (number != 0) { 
    if (number % 10 > max) { 
     max = number % 10; 
    } 
    number /= 10; 
} 

這個循環認定數的最大十進制數。例如。如果number==152,您將在循環後得到max==5

1

如果number最後一個數字大於max

if ((number % 10)> max) 

然後max等於最後一位

max = (number % 10); 

刪除最後一個數字

number /= 10; 

當你把這個在循環中,讓我們找到中最大的數字。

0

下面的代碼完成同樣的工作,但以一種更容易理解的方式。它的運行速度也更快,因爲計算成本很高的部門數量被最小化(代碼中的每個%隱含地涉及一個部門)。

// given: a positive integer 'number' 
// sought-for: the maximum decimal digit in 'number' 
int maxReminder = 0; 
while (number != 0) { 
    // find the quotient of the division of 'number' by 10 
    int divQuotient = number/10; 
    // find the reminder of the division above 
    int divReminder = number - divQuotient*10; 
    if (divReminder > maxReminder) { 
     // 'divReminder' is the new maximum reminder 
     maxReminder = divReminder; 
    } 
    // prepare for the next iteration 
    number = divQuotient; 
} 
// 'maxReminder' now holds the sought-for