回文數是指正讀與反讀都一樣的數字(如 121、1331)。我們可以利用 while 迴圈將數字反轉,再與原數比較。
#include <stdio.h>
int main() {
int m, val, sum = 0;
printf("請輸入一個整數:");
scanf("%d", &m);
val = m; // 保存原始值
while (m != 0) {
sum = sum * 10 + m % 10; // 取最後一位並累加到反轉數
m = m / 10; // 去掉最後一位
}
if (sum == val)
printf("%d 是回文數\n", val);
else
printf("%d 不是回文數\n", val);
return 0;
}
m % 10 取得個位數字m / 10 整數除法,捨去個位sum * 10 + digit 將新數字加到反轉數的尾部val 供最後比較,因 m 會歸零int 範圍,建議用 long long 或字串處理#include <stdio.h>
#include <stdbool.h>
bool isPalindrome(int x) {
if (x < 0) return false;
long long reversed = 0;
int original = x;
while (x != 0) {
reversed = reversed * 10 + x % 10;
x /= 10;
}
return reversed == original;
}
int main() {
int num;
printf("輸入整數:");
scanf("%d", &num);
printf("%d %s回文數\n", num, isPalindrome(num) ? "是" : "不是");
return 0;
}