回文数:我的代码有什么问题?

时间:2019-05-04 21:25:10

标签: numbers palindrome

我正在用c ++编写代码,以检测输入数字是否为回文数,这意味着其反方向与原点相同。我在计算反向整数时遇到问题。

例如

121 returns true;
123 returns false;
12321 returns true;
10 returns false;

我输入123,总和应为321。但是,我的代码始终返回386。我使用xcode进入了该函数。但是,我仍然不知道为什么反向+ =(3 * 10)+ 2变为35,或者为什么最终反向数字为386。

int origin = x;
int reverse = 0;

while (x != 0) {
    int digit = x % 10;
    reverse += ((reverse * 10) + digit);
    x /= 10;
}

1 个答案:

答案 0 :(得分:0)

  

为什么reverse += (3 * 10) + 2变成35

因为+=将右侧的内容添加到左侧的现有值中。 (3 * 10) + 2是32,但是reverse已经是 3,因此您要将32添加到现有的3中,即35。

您不想添加reverse的值;您要替换

更改

reverse += ((reverse * 10) + digit)

收件人

reverse = ((reverse * 10) + digit)