C语言实现
在C语言中,你可以通过分别提取出五位数的各个位(万位、千位、百位、十位、个位),然后比较这些位是否满足回文数的条件。
c复制代码 #include <stdio.h> #include <stdbool.h> bool isPalindrome(int x) { // 排除非五位数和负数 if (x < 10000 || x > 99999) { return false; } // 提取各个位 int tenThousand = x / 10000; // 万位 int thousand = (x / 1000) % 10; // 千位 int hundred = (x / 100) % 10; // 百位 int ten = (x / 10) % 10; // 十位 int one = x % 10; // 个位 // 比较回文 return (tenThousand == one) && (thousand == ten); } int main() { int number; printf("请输入一个五位数: "); scanf("%d", &number); if (isPalindrome(number)) { printf("%d 是回文数\n", number); } else { printf("%d 不是回文数\n", number); } return 0; }
Python实现
Python 实现会相对简洁一些,因为 Python 提供了更丰富的字符串操作功能。但题目要求的是数字,所以我们可以先将数字转换为字符串,然后检查其是否为回文数。
方法1:字符串比较
python复制代码 def is_palindrome(x): # 排除非五位数和负数 if not 10000 <= x <= 99999: return False # 转换为字符串并检查回文 return str(x) == str(x)[::-1] number = int(input("请输入一个五位数: ")) if is_palindrome(number): print(f"{number} 是回文数") else: print(f"{number} 不是回文数")
方法2:数字提取比较(类似C语言)
虽然Python中不常用这种方法,但为了与C语言的方法保持一致,我们也可以这样做:
python复制代码 def is_palindrome_number(x): # 排除非五位数和负数 if not 10000 <= x <= 99999: return False # 提取各个位 ten_thousand = x // 10000 thousand = (x // 1000) % 10 hundred = (x // 100) % 10 ten = (x // 10) % 10 one = x % 10 # 比较回文 return ten_thousand == one and thousand == ten number = int(input("请输入一个五位数: ")) if is_palindrome_number(number): print(f"{number} 是回文数") else: print(f"{number} 不是回文数")
这两种Python方法都可以实现题目要求,但通常第一种方法(使用字符串操作)在Python中更为常见和简洁。