打印10~1000之间满足下列条件的所有整数:正序读和反序读都相同,例如:55、232等
提示】inta;判断回文的条件If((a/100==0&&a/10==a%10)||(a/100!=0&&a/100==a%10
基于new bing和自己的理解的编写代码,供参考哈
#include <stdio.h>
#include <stdbool.h>
// 判断一个整数是否是回文数,即正序和反序都相同
bool is_palindrome(int n) {
int reversed = 0; // 反转后的数
int original = n; // 原始数
while (n > 0) {
// 每次取出最低位,加到反转后的数的最高位
reversed = reversed * 10 + n % 10;
// 去掉最低位
n /= 10;
}
// 判断反转后的数和原始数是否相等
return reversed == original;
}
int main() {
// 遍历10~1000之间的所有整数
for (int i = 10; i <= 1000; i++) {
// 如果是回文数,打印出来
if (is_palindrome(i)) {
printf("%d\n", i);
}
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:要让计算机帮您找出10到1000之间所有的回文数,可以先定义一个判断回文数的函数,然后遍历10到1000之间的整数调用该函数即可。
下面是一个Python的代码示例:
def is_palindrome(num):
"""判断一个数是否为回文数"""
return str(num) == str(num)[::-1]
# 遍历10到1000之间的整数,找出回文数
for i in range(10, 1001):
if is_palindrome(i):
print(i)
这个代码中,is_palindrome()
函数接受一个数作为参数,将该数转换成字符串后使用字符串切片操作[::-1]
得到它的反序字符串,再将原字符串与反序字符串对比,判断该数是否为回文数。
遍历10到1000之间的整数时,对每个数都调用is_palindrome()
函数,找到回文数后输出即可。
提示中提到了判断回文数的条件,可以根据这个条件进行优化,避免遍历不必要的数。此处给出一个优化后的代码示例:
def is_palindrome(num):
"""判断一个数是否为回文数"""
str_num = str(num)
if len(str_num) == 2:
return str_num[0] == str_num[1]
elif len(str_num) == 3:
return str_num[0] == str_num[2]
# 遍历10到1000之间的整数,找出回文数
for i in range(11, 1001, 10):
if i < 100:
if is_palindrome(i):
print(i)
else:
if is_palindrome(i):
print(i)
if is_palindrome(i+1):
print(i+1)
这个代码中,is_palindrome()
函数的实现与之前相似,但它加入了对不同位数的判定。在遍历时,我们只需要遍历10到1000之间的奇数,不需要遍历偶数。对于小于100的数,只需要判断是否为回文数即可;对于大于等于100的数,还要判断加1后是否为回文数,因为它可能是一个偶数。