这是我要查找symmetryNumber的代码。
数据模型应该是

例1)如果我给91,它会打印出19。然后进行比较。
如果与输入的数字不匹配,则将其加91和19,
并输出110。然后一次又一次地执行。

例2)如果我给出2002,它将打印出2002。因为它是对称数字,所以它确实与输入数字匹配。因此输出为2002。


没有数组或任何其他高级技能。
我的作业是使用基本语法和变量来解决此问题。
但是我认为我的逻辑有一些错误。

 当我编译它时,它只是在循环,循环,循环
但它只能用一位数字工作。我不确定为什么...

 希望你们帮我,谢谢!

ULong Symmetrize (ULong number) {
    ULong symmetryNumber = 0;
    ULong temp;
    ULong quotient;
    ULong remainder;

    do {
        number = number + symmetryNumber;
        temp = number;
        while (temp = 0) {
            quotient = temp/10;
            remainder = temp%10;
            symmetryNumber = (symmetryNumber * 10) + remainder;
            temp = quotient;
        }
    } while (number != symmetryNumber);

    return symmetryNumber;
}

最佳答案

这是代码的主要问题之一:

while (temp = 0) {


这是一项任务。

如果您使用左侧的文字写成:

while (0 = temp) {


然后,编译器将捕获该错误。
无论如何,比较应为:

while (temp == 0) { // < note the '==' rather than just '='


建议更正该陈述

发布的代码的第二个主要问题是此行:

} while (number != symmetryNumber);


假设'number'是25,则s ... number将是52,而25将永远不等于52,因此循环将永远继续。

这行:

number = number + symmetryNumber;


绝对没用,因为值+ 0仍然是该值。
建议删除该声明

外部的do ... while语句除了使其成为无限循环外没有其他作用。
建议去除外圈

10-07 13:42