题目:
寻找1到1993之间的所有回文数(回文数:1221、2222、9009),并打印它们。
实现思路:
- 使用一个循环遍历从1到1993的所有整数。
- 对于每个整数n,使用另一个循环将其转换为它的反转数x。
- 检查n是否等于它的反转数x。如果相等,则它是一个回文数,并打印该数。
代码:
#include <stdio.h>
int main() {
int n, x = 0, y, z; // n用于循环计数,x用于存储反转后的数,y用于在循环中存储n的副本,z未使用,可以移除。
for(n = 1; n <= 1993; n++, x = 0) { // 遍历从1到1993的所有整数,每次循环开始时将x重置为0。
y = n; // 将n的值赋给y,以便在while循环中处理,避免改变n的值。
while(y != 0) { // 当y不为0时,继续循环。
x = x * 10 + y % 10; // 将y的最后一位加到x的末尾,并去掉y的最后一位。
y /= 10; // 去掉y的最后一位。
}
if(n == x) printf("%d\n", x); // 如果n等于其反转数x,则打印x。
}
return 0;
}
解读:
#include <stdio.h>
:包含标准输入输出头文件,用于使用printf
函数。int main()
:程序的主入口点。- 变量声明:
int n
:用于循环遍历1到1993的整数。int x = 0
:用于存储n的反转数,初始化为0。int y
:用于存储n的副本,以避免在反转过程中改变n的值。int z
:此变量在代码中未使用,可以移除。for(n = 1; n <= 1993; n++, x = 0)
:循环从1开始,每次迭代增加n的值,并在每次迭代开始时将x重置为0。y = n;
:将n的值赋给y,以便在while循环中处理。while(y != 0)
:当y不为0时,执行循环体,用于反转y的值。
x = x * 10 + y % 10;
:将y的最后一位加到x的末尾,并更新x的值。y /= 10;
:去掉y的最后一位。if(n == x) printf("%d\n", x);
:检查n是否等于其反转数x。如果相等,打印x的值。return 0;
:程序成功执行完毕,返回0。