C言語で回文数のアルゴリズムを書くにはどうすればいいですか?

C言語では、数が回文数かどうかを判定する一般的なアルゴリズムは、その数を文字列に変換して、その文字列が回文文字列かどうかを判定することです。以下に示すのはサンプルコードです。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int isPalindrome(int num) {
    char str[20];
    sprintf(str, "%d", num); // 将整数转换为字符串

    int len = strlen(str);
    for (int i = 0; i < len/2; i++) {
        if (str[i] != str[len-i-1]) {
            return 0; // 不是回文数
        }
    }
    return 1; // 是回文数
}

int main() {
    int num;
    printf("请输入一个整数:");
    scanf("%d", &num);

    if (isPalindrome(num)) {
        printf("%d是回文数\n", num);
    } else {
        printf("%d不是回文数\n", num);
    }

    return 0;
}

上記のコードでは、sprintf関数を使用して入力された整数を文字列に変換し、その後、文字列の前半部分をループで順番にチェックして、対応する後半部分と等しいかどうかを判断します。一つでも違う文字があれば、その数は回文数ではありません。ループが終了しても違う文字を見つけない場合、その数は回文数です。

bannerAds