输出回文数个数
这种题目其实很简单,怎么做呢?答案就是最基础的除以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 }
来看看效果: