输出回文数个数

 

 这种题目其实很简单,怎么做呢?答案就是最基础的除以10,模10,反复执行。

基本思路就是,我把这个数一步一步拆开,不断地除以10,这个数会越变越小,同时不断地模10,再不断地用这个模出来的结果乘以10,相加,乘以10,相加,最后,我判断一下这个重新组合的数跟原数是不是相等就可以了,如果是回文数,那么肯定是相等的。

下面上代码:

 1 #define _CRT_SECURE_NO_WARNINGS 1
 2 #include <stdio.h>
 3 #include <stdbool.h>
 4 
 5 bool isPalindrome(int n)  //判断是否是回文数
 6 {
 7     int n1 = n, n2 = 0;
 8     while (n > 0)
 9     {
10         n2 = n2 * 10 + n % 10;
11         n /= 10;
12     }
13     return n1 == n2;
14 }
15 
16 int main()
17 {
18     int n, count = 0;
19     while (scanf("%d", &n) > 0)
20     {
21         for (int i = 1; i <= n; i++) {
22             if (isPalindrome(i)) {
23                 count++;
24             }
25         }
26         printf("%d\n", count);
27         count = 0;
28     }
29     return 0;
30 }

来看看效果:

 

posted @ 2021-06-10 22:46  EvanTheBoy  阅读(100)  评论(0编辑  收藏  举报