c - C中的回文问题

标签 c algorithm palindrome

我已经用 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/

相关文章:

java - 我定义了一个随机数,我想检查它是否是回文java

java - 回文java程序的数组索引越界异常

python - 在 Python 中使用集合论求形状面积

java - 欧几里德最大公分母法实现中的死循环

java - 计算回文子串的个数

c - C 中文件存在的问题

c - 用于在 Tizen 中获取位置值的包

c - printf中终止符操作符的操作

c - Scanf 不等待输入

algorithm - 求解非线性丢番图方程,例如 (8+3n)m = 11?