C言語で回文であるか判断する関数を呼び出すためには、どうすればよいですか?
回文数の判定方法は次の方法がある。
- 回文数を判定する関数 isPalindrome を定義する。この関数は整数をパラメータとして受け取り、その整数が回文数であるかどうかを表す真偽値を返す。
- isPalindrome 関数では、受け取った整数を文字列に変換し文字ごとに比較処理をしやすくする。
- 文字列の最初と最後を指す left と right の2つのポインタを使用します。
- left ポインタが right ポインタ以下である間、以下を実行するループを使用します:
- 左側のポインターが指す文字と右側のポインターが指す文字が異なる場合、False を返して回文でないことを示す。
- そうでなければ、leftポインタを右に1つ進め、rightポインタを左に1つ進め、次の文字の比較を続ける。
- ループの最後にfalseが返らなかった場合は、その整数値は回文数であることを示し、trueを返します。
以下にサンプルコードを示す。
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
bool isPalindrome(int x) {
// 将整数转换为字符串
char str[20];
sprintf(str, "%d", x);
int left = 0;
int right = strlen(str) - 1;
while (left <= right) {
if (str[left] != str[right]) {
return false;
}
left++;
right--;
}
return true;
}
int main() {
int x;
printf("请输入一个整数:");
scanf("%d", &x);
if (isPalindrome(x)) {
printf("%d 是回文数\n", x);
} else {
printf("%d 不是回文数\n", x);
}
return 0;
}
上記のサンプルコードでは、最初に、整数値が回文数であるかを判断する isPalindrome 関数を定義しています。main 関数では、ユーザーからの入力を元に isPalindrome 関数を呼び出し、その返り値に基づいて結果を出力します。