C语言:求区间内所有的回文数

题目:

编写函数,求区间[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开始

sumkk%10
0525\
5525
5252
52505

当k = 0时,循环结束。

  • 12
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值