我有一个很难理解下面的代码:这段代码的逻辑是什么?
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'相同 –