回文数就是看看这个数是不是左右对称。开始就设置一个函数,在这个函数里求出这个数据的逆序数,如果逆序数与原数相同就是回文数,然后在主函数里的循环里调用函数就可以了
ps:不知道为什么,我感觉这题不难,结果我开始还是把它写崩了
【问题描述】
所谓"回文数"是指具有如下性质的整数:一个整数,当它的各位数字逆序排列,形成的整数与原整数相同,这样的数称为回文数。例如,素数11,373,其各位数字对换位置后仍然为11,373,因此这两个整数均为回文数。编写函数int loop(int x),判断一个整数是否为回文数,如果x是回文数则返回1,否则返回0。编写程序loop.c,接收控制台输入的两个整数a,b。调用loop函数输出a到b之间(包括a和b)的所有回文数
【输入形式】
控制台输入两个整数a和b(必有a<b),以空格分隔。
【输出形式】
输出有若干行,每行有一个a和b之间的回文数。输出各行上的数字不重复,且从小至大依次按序输出。
【样例输入】
3 120
【样例输出】
3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99 101 111
【样例说明】
输入整数a=3,b=120,要求输出所有[3, 120]之间的回文数。按升序分行输出所有符合题意的整数。
#include<stdio.h>
int loop(int x)//定义函数,找回文数
{
int y=0,c;//y是x的逆序数
c=x;
while(c>0)//求y
{
y=y*10+c%10;
c=c/10;
}
if(x==y)
return 1;//当x=y,即是回文数时,返回值为1,反之为0
else
return 0;
}
int main()
{
int a,b,i;
scanf("%d%d",&a,&b);//输入a,b
for(i=a;i<=b;i++)
{
if(loop(i)==1)//是回文数,输出
printf("%d\n",i);
}
return 0;
}