C言語で回文数の判定方法を記述してください。
回文かどうかの判定は、数値を文字列に変換して、前半と後半を比較すれば良い。具体的には、次のように行う。
- 入力数値を文字列に変換するには、sprintf() 関数またはその他の方法を使用します。
- 文字列の長さを取得し、文字列の中央位置を計算します。例えば長さnの文字列の中央位置はn/2です。
- 文字列の前半を順にループで回し、対応する位置にある後半と比較し、等しくなかった場合は回文数ではないとしてfalseを返す。
- ループの終了時点で不等が存在しない場合は回文数なので、Trueを返す。
以下に、この方法を用いた回文数の判定のサンプルコードを示します。
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
bool isPalindrome(int num) {
char str[20]; // 假设数的最大位数不超过20
sprintf(str, "%d", num); // 将数转化为字符串
int len = strlen(str);
int mid = len / 2;
for (int i = 0; i < mid; i++) {
if (str[i] != str[len - 1 - i]) {
return false;
}
}
return true;
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (isPalindrome(num)) {
printf("%d是回文数\n", num);
} else {
printf("%d不是回文数\n", num);
}
return 0;
}
最大桁数が 20 未満の数値を想定していますが、必要に応じて str 配列のサイズを変更できます。また、この手法は負の数を処理でき、たとえば入力値が -121 の場合も回文数として判定されます。