我有一個很難理解下面的代碼:這段代碼的邏輯是什麼?
if ((number % 10)> max) //rem of 10
{
max = (number % 10);
}
number /= 10;
能否請你幫我這個?
我有一個很難理解下面的代碼:這段代碼的邏輯是什麼?
if ((number % 10)> max) //rem of 10
{
max = (number % 10);
}
number /= 10;
能否請你幫我這個?
(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
類型爲類,那麼你可以重載所有這些運營商爲你的類。
我猜你發佈的代碼是一個循環體,這樣的:
int max = 0;
while (number != 0) {
if (number % 10 > max) {
max = number % 10;
}
number /= 10;
}
這個循環認定數的最大十進制數。例如。如果number==152
,您將在循環後得到max==5
。
如果number
最後一個數字大於max
:
if ((number % 10)> max)
然後max
等於最後一位
max = (number % 10);
刪除最後一個數字
number /= 10;
當你把這個在循環中,讓我們找到中最大的數字。
下面的代碼完成同樣的工作,但以一種更容易理解的方式。它的運行速度也更快,因爲計算成本很高的部門數量被最小化(代碼中的每個%
隱含地涉及一個部門)。
// 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
難道你不理解'if'的工作原理或操作員的操作?解釋你想達到什麼。 – Mahesh
那麼你的問題是什麼? –
'%'給出餘數,'number/= 10'與'number = number/10'相同 –