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