题目:
求1~n中回文数的个数,回文数指正读和反读相同的整数,即该数和它的逆序数相等,如535,282等。
输入:
输入包括多行,每行输入一个正整数n(n>=1)。若输入的正整数是0,则结束输入。
输出:
与输入相应,各行对应输出1~n中回文数的个数。
样例输入:
9
44
55
0
样例输出:
9
13
14
分析:
可以求n的反读,如果n的反读与正读是一样的,那n就是回文数。比如,353的反读是353,而123的反读是321。可以利用求商取余的方法求出n的反读。最后输出n内有多少回文数。
流程图:
代码片段:
#include <stdio.h>
#include<math.h>
int palindrome(a,x)
{
int t;
do
{
t=x%10;
a=a*10+t;
x=x/10;
}
while(x>0);
return a;
}
int main()
{
int n,a,x,c,i;
while(scanf("%d",&n)&&n!=0)
{
c=0;
for(i=1; i<=n; i++)
{
a=0;
x=i;
a=palindrome(a,x);
if(a==i) c++;
}
printf("%d\n",c);
}
return 0;
}
ps:本人还是个小白,该文只是拿来练手,如果有什么不对的地方,欢迎讨论~~~