我很难理解以下代码:
if ((number % 10)> max) //rem of 10
{
max = (number % 10);
}
number /= 10;
你能帮帮我吗?
答案 0 :(得分:3)
我猜你发布的代码是循环的主体,如下所示:
int max = 0;
while (number != 0) {
if (number % 10 > max) {
max = number % 10;
}
number /= 10;
}
此循环查找数字的最大十进制数字。例如。如果number==152
,您将在循环后获得max==5
。
答案 1 :(得分:1)
(number % 10)
,在number
除以10
后剩下的(number % 10) > max
。max
,表示该格式是否大于max
。因此,如果剩余部分大于max
,则会将 max = (number % 10);
余数作为:{/ p>
number/=10
number = number/10; //same as number /= 10;
是
number
将number
除以10,并将商保存在 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.
。
C ++中还有其他简介:
a
如果{{1}}的类型是类,那么您可以为您的类重载所有这些运算符。
答案 2 :(得分:1)
如果number
的最后一位数字大于max
:
if ((number % 10)> max)
然后max
等于最后一位
max = (number % 10);
删除最后一位数
number /= 10;
当你把它放在一个循环中时,它让你找到number
中的最大数字。
答案 3 :(得分: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