我已经用 C 语言编写了一些代码来尝试判断一个数字是否为回文。规则是两个 3 位数字必须相乘,并且您必须找到最高的回文数。答案应该是 906609,但我的代码只能得到 580085。
代码:
#include <stdio.h>
#include <stdlib.h>
/* Intialise */
void CalcPalin();
int CheckPalin(int number);
/* Functions */
void CalcPalin()
{
int result = 0;
int palin = 0;
int FNumber = 0;
int FNumber2 = 0;
int number = 99;
int number2 = 100;
while(number2 < 1000)
{
number += 1;
/*times together - calc result*/
result = number * number2;
if(CheckPalin(result) == 1)
{
palin = result;
FNumber = number;
FNumber2 = number2;
}
if(number == 999)
{
number = 99;
number2 += 1;
}
}
printf(" Result = %d, by Multiplying [%d] and [%d]", palin, FNumber, FNumber2 );
}
int CheckPalin(int number)
{
int checknum, checknum2 = 0;
checknum = number;
while(checknum)
{
checknum2 = checknum2 * 10 + checknum % 10;
checknum /= 10;
}
if( number == checknum2)
return 1;
else
return 0;
}
int main( void)
{
CalcPalin();
return EXIT_SUCCESS;
}
我很确定这是一个愚蠢的答案,我正在寻找一些简单的东西,但我似乎找不到它。任何帮助都会很棒
最佳答案
您还没有测试当前结果是否高于旧结果。添加此检查。
// test new result is higher than old palin before setting this as palin
if(CheckPalin(result) == 1 && palin < result)
关于c - C中的回文问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9565126/