#include <stdio.h>
int main()
{
long int n, reverse=0, rem,temp, max_palindrom = -1;
int i, j;
for (i = 100; i <= 999; i++)
{
for (j = 100; j <= 999; j++)
{
n = 1*j;
temp=n;
while(temp!=0)
{
rem=temp%10;
reverse=reverse*10+rem;
temp/=10;
}
if(reverse==n)
{
printf("DDDDD"); // < === not executing
}
}
}
printf("%d ", max_palindrom);
return 0;
}
答案 0 :(得分:0)
尝试新号码时,您没有将reverse
重置为零。因此,在整个程序的过程中不断添加数字,从不使它等于回文。
尝试在第二个循环中重新初始化它,如下所示:
for (j = 100; j <= 999; j++)
{
reverse = 0;
...
您的代码还存在其他问题,但您最终会找到这些问题。
答案 1 :(得分:0)
正如junjanes所说,你需要重置反向变量。为什么你使用两个for loop
就足够了。
供参考,请参阅此修改后的内容。
#include <stdio.h>
int main()
{
int n, reverse=0, rem,temp, max_palindrom = -1;
int i, j;
for (j = 100; j <= 999; j++)
{
n=j;
temp=n;
while(temp!=0)
{
rem=temp%10;
reverse=reverse*10+rem;
temp/=10;
}
if(reverse==n)
{
printf("DDDDD"); // < === not executing
printf("%d\n", reverse);
}
if(max_palindrom<reverse)
{
max_palindrom=reverse;
}
reverse=0;
}
printf("%d ", max_palindrom);
return 0;
}