#include<stdio.h>
int main(void)
{
int rev=0,temp=0,frwd,n,ans=0;
int i,j;
for(i=100;i<=999;i++)
{
for(j=i;j<=999;j++)
{
n = i*j;
frwd = n;
while(n!=0)
{
temp = n%10;
n = n/10;
rev = temp+rev*10;
}
printf("%d",rev);
if((rev == frwd)&&(ans<frwd))
{
ans=frwd;
printf("%d",ans);
}
}
}
return(0);
}
我已尝试解决所有问题,但这段代码似乎没有给出正确的输出。 所需的输出是最大的 6 位回文数。 如果我正在运行各个部分,即 number 的反转,检查 number 是否是回文或 for 循环,它们工作正常但在程序中它们将垃圾作为输出。 任何帮助,将不胜感激。
最佳答案
是的,问题是您没有像 cowanother.anon.ard 所说的那样将 rev 重新初始化为 0。尝试将 rev=0 放在内部 for 循环中。
但你不能通过你的方法得到 999999 作为 6 位数字的最高回文数,因为你没有检查所有 6 位数字。
关于c - C中数字的回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16797489/