程序查找输入的数字后的下一个回文
编译时,仅要求输入值的第一部分进行编译。之后什么也没发生
#include<stdio.h>
void main()
{
int n,revNum = 0,remainder,d,revD = 0;
printf("Enter an non palindromic number:");
scanf("%d",&n);
d = n;
while (d != revD)
{
n += 1;
d = n;
while (n != 0)
{
remainder = n%10;
revNum = (revNum * 10) + remainder;
n = n/10;
}
n = d;
revD = revNum;
}
printf("\nThe nearest palindrome is %d",d);
}
我解决问题的方式有问题吗?
答案 0 :(得分:0)
在循环中放入printf
,您会发现逻辑不好。例如,在第一个循环中添加一个printf("show");
。
答案 1 :(得分:0)
您忘记了在外部循环中将revNum
重新初始化为0。
当然,正如其他答案已经指出的那样,该问题与逻辑错误有关。这就是为什么编译器根本不抱怨的原因。
例如,我通过在内圈内添加打印来弄清楚。经过一些测试,我发现它与palindrom数字的直接前辈(例如43、98、100)一起使用时效果很好,但与其他数字有所不同。通过打印内部变量,我了解了revNum
的用途,并且应该在外部while循环的每次迭代中将其重新初始化。
...
while (d != revD)
{
n += 1;
d = n;
revNum = 0; //ADD THIS
while (n != 0)
{
...
}
}
...