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; //结束正常程序
}