#include <stdio.h>
// 將十進制數轉換為指定進制的字符串
char* convertToBase(int num, int base) {
static char buffer[32];
char digits[] = "0123456789ABCDEF";
int index = 0;
while (num > 0) {
buffer[index++] = digits[num % base];
num /= base;
}
buffer[index] = '\0';
return buffer;
}
// 檢測一個字符串是否為回文數
int isPalindrome(char* str) {
int length = strlen(str);
for (int i = 0; i < length / 2; i++) {
if (str[i] != str[length - i - 1]) {
return 0;
}
}
return 1;
}
int main() {
int num;
printf("請輸入一個十進制數:");
scanf("%d", &num);
for (int base = 2; base <= 16; base++) {
char* str = convertToBase(num, base);
if (isPalindrome(str)) {
printf("%d進制下的回文數為:%s\n", base, str);
}
}
return 0;
}
這段代碼首先實現了一個將十進制數轉換為指定進制的字符串的函數convertToBase
,然后實現了一個檢測一個字符串是否為回文數的函數isPalindrome
。在main
函數中,用戶輸入一個十進制數,然后程序將該數轉換為2到16進制的字符串,并檢測是否為回文數,若是回文數則輸出。