C言語で回文かを判定する方法

回文数かどうかを判断するには、数を文字列に変換し、文字列の前半と後半が同じかどうかを調べればよい。

手順は次のとおりです。

  1. 判定する数値を格納する整数型変数numを定義する。
  2. num を文字列 str に変換する。
  3. start と end という名前の2つの int 変数は、文字列の頭と終わりを指すように定義されています。
  4. str[start] != str[end] の場合、回文数ではないので false を返す。
  5. そうでなければ start を1増やし end を1減らしループを続行する。
  6. ループ終了後に、数が回文数であることを確認し、true を返します。

サンプルコードを以下に示します。

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

bool isPalindrome(int num) {
    char str[20];
    sprintf(str, "%d", num);
    int start = 0;
    int end = strlen(str) - 1;
    while (start <= end) {
        if (str[start] != str[end]) {
            return false;
        }
        start++;
        end--;
    }
    return true;
}

int main() {
    int num;
    printf("请输入一个整数:");
    scanf("%d", &num);
    if (isPalindrome(num)) {
        printf("%d是回文数\n", num);
    } else {
        printf("%d不是回文数\n", num);
    }
    return 0;
}

sprintf関数を用いて整数値を文字列に変換しているので、ヘッダファイルstring.hをインクルードする必要があります。この例では正の整数のみ回文かどうか判断していますが、負の数や0を含む数値の場合は、必要に応じて実装を調整する必要があります。

bannerAds