这段代码中的逻辑是什么?

时间:2011-09-18 07:20:55

标签: c++ logic

我很难理解以下代码:

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

你能帮帮我吗?

4 个答案:

答案 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