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