-3

这是我想找到symbolicNumber的代码。
数据模型应该是..

Ex.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;
}
4

1 回答 1

1

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

while (temp = 0) {

这是一项任务。

如果你用左边的文字写成:

while (0 = temp) {

然后编译器就会发现错误。无论如何,比较应该是:

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

建议更正该说法

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

} while (number != symmetryNumber);

假设“数字”为 25,那么 s...数字将为 52,而 25 永远不会等于 52,因此循环将永远继续。

这一行:

number = number + symmetryNumber;

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

外部 do...while 语句除了使其成为无限循环之外没有任何作用。建议去掉外环

于 2015-09-18T01:15:24.133 回答