CまたはC++を使用してユーザーの入力で文字列が回文かどうかをチェックする方法


方法1: 反転して比較する方法

この方法では、入力された文字列を反転させて元の文字列と比較します。もし反転した文字列と元の文字列が同じであれば、回文であると判断します。

#include <stdio.h>
#include <string.h>
int main() {
    char str[100];
    char rev_str[100];

    printf("文字列を入力してください: ");
    scanf("%s", str);

    strcpy(rev_str, str);
    strrev(rev_str);

    if (strcmp(str, rev_str) == 0) {
        printf("入力された文字列は回文です\n");
    } else {
        printf("入力された文字列は回文ではありません\n");
    }

    return 0;
}

方法2: 前後から比較する方法

この方法では、文字列の前と後ろから順番に文字を比較していきます。もし一致しない文字が見つかれば、回文でないと判断します。

#include <stdio.h>
#include <string.h>
int isPalindrome(char str[]) {
    int len = strlen(str);
    int i, j;

    for (i = 0, j = len - 1; i < j; i++, j--) {
        if (str[i] != str[j]) {
            return 0; // 回文でない
        }
    }

    return 1; // 回文である
}
int main() {
    char str[100];

    printf("文字列を入力してください: ");
    scanf("%s", str);

    if (isPalindrome(str)) {
        printf("入力された文字列は回文です\n");
    } else {
        printf("入力された文字列は回文ではありません\n");
    }

    return 0;
}

これらの方法は、文字列が回文かどうかを効率的にチェックするシンプルな方法です。どちらの方法もCまたはC++で実装することができます。ご自身の要件に合わせて、適切な方法を選択してください。