【ZZULIOJ】1106: 回文数(函数专题)

ZZULIOJ题解

1106: 回文数(函数专题)

题目描述
一个正整数,如果从左向 右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。输入两个整数m和n(m<n),输出区间[m,n]之间的回文数。

输入
输入两个正整数m和n,输入保证m<n。

输出
按从小到大的顺序,输出m到n之间的回文数,每个数后面有一个空格。

样例输入

100 200

样例输出

101 111 121 131 141 151 161 171 181 191 

先用函数处理出回文数的计算方法,然后进行判断是否满足回文数条件进行输出

代码

#include<stdio.h>
#include<math.h>
int inverse(int n) 
{ 
	int w,j,i,x=1,sum=0;//逆序数字计数和sum,循环变量i,j,以及n的位数w 
 	w=log10(n)+1;//计算n的位数w 
 	for(j=1;j<w;j++)	x*=10;//循环计算最高位对应的位数 
	for(i=1;i<=w;i++){//循环实现逆序数字 
	sum+=n%10*x;//每次取最低位的数字做新数字的最高位 
	x/=10;//把新的位数降低一位,做下一个高位数字 
	n/=10;//把数字向前取一位,抛弃最低位数字 
	}
	return sum;//计算并返回n的逆序数字 
} 
int main()
{
	int w,n,m,x;//定义数字范围m和n,以及循环变量x 
	scanf("%d %d",&m,&n); //键盘输入范围m和n 
	for(x=m;x<=n;x++)
	{
	if(x==inverse(x))	//如果逆序数字和本体相等 
	printf("%d ",x);//输出该数字 
	}
	return 0; //结束正常程序 
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

 江海寄余生 

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值