我知道在给定数字的情况下查找回文的代码,并且我尝试将其归纳为查找由两个这样的3位数字的乘积构成的最大回文:-
#include<stdio.h>
#include<conio.h>
void main()
{
int i,no,d,j,temp;
int sum=0;
clrscr();
for(i=1;i<1000;i++)
{
for(j=1;j<1000;j++)
{
sum=0;
no=i*j;
temp=no;
while(no>0)
{
d=no%10;
sum=sum*10 + d;
no=no/10;
}
if(sum==temp)
{
printf("number is Palindrome %d\n",sum);
}
}
}
getch();
}
但是,我没有解决方案,有人可以帮忙吗?
答案 0 :(得分:1)
int sum=0
应该位于内部for循环内,紧接在行no=i*j
之前:
对于每个新数字,总和的值应从零开始。如果将其放置在最前面,则它将采用从前一个sum
生成的no
的值来表示所有即将到来的no
。
如果将sum=0
放在j
循环之前的while
循环内,则对于i*j
的每个新组合,总和将从0
开始,您将100%获得所有所需的回文