题目:
编写函数,求区间[200,3000]中所有的回文数
补充:
回文数是正读和反读都是一样的数。如525, 1551。
解题
解题思路:
将提供的数据反过来与原来的数据相比较,相同则是回文数,怎么取反呢,就是将高位的数字变为低位的数字,用到了取模和除法,详情见代码。
代码如下:
#include<stdio.h>
//求[200,3000]内的回文数,用函数解决
//函数声明:判断一个数是否是回文数
void isPalindromic(int n);
int main(void)
{
int i;
for (i = 200; i <= 3000; i++)
{
isPalindromic(i);
}
return 0;
}
void isPalindromic(int n)
{
int sum = 0, k;
k = n;
//通过循环将数倒置过来
do {
//sum从0开始,每次都乘以个10
sum = sum * 10 + k % 10;
k = k / 10;
} while (k);
//如果倒置过来的数与原数相等,则是回文数
if (sum == n)
{
printf("%d\n", n);
}
}
do {
sum = sum * 10 + k % 10;
k = k / 10;
} while (k);
关于这串代码:
例如:当k =525,sum从0开始
sum | k | k%10 |
---|---|---|
0 | 525 | \ |
5 | 52 | 5 |
52 | 5 | 2 |
525 | 0 | 5 |
当k = 0时,循环结束。