在c编程中查找symmetryNumber

在c编程中查找symmetryNumber,c,while-loop,symmetry,C,While Loop,Symmetry,这是我要查找symmetryNumber的代码。 数据模型应为.. 如果我给91,它会打印出19。比较一下。 如果与输入的数字不匹配,则添加91和19, 和输出110。一次又一次地做。 如果我给2002,它会打印出2002由于它是对称数,因此与输入数不匹配。因此,产出将是2002年 没有阵列,或任何其他高级技能。 我的家庭作业是用基本语法和变量来解决这个问题。 但我认为我的逻辑有一些错误 当我编译这个时,它只是在循环,循环,循环 但是一个数字就可以了。我不知道为什么 希望你们能帮助我,谢谢

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

如果我给91,它会打印出19。比较一下。
如果与输入的数字不匹配,则添加91和19,
和输出110。一次又一次地做。

如果我给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 '='
假设“number”是25,那么s…number将是52,25将永远不会等于52,因此循环将永远继续

这一行:

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

外部do…while语句除了使其成为一个无限循环之外没有其他作用。
建议移除外环

=
!=<代码>=。任务!=相等。您的意思是我需要将“temp=0”编辑为“temp=0”吗?:)是的,这是另一个错误,谢谢!但它毕竟不起作用…..如果你要做一个例子,你会很快看到问题(至少有3个主要问题,请看下面我的答案可能是正确的答案,但我不同意
while(0=temp){
建议。这只是颠倒了自然逻辑。一个好的编译器无论如何都应该对此类事情发出警告(
gcc
将发出警告,例如,使用适当的警告标志,如
-Wall
)。
number = number + symmetryNumber;