解题思路:
先用暴力的方法穷举出所有的五、六位数
然后再到循环里面判断,是否符合题目要求,符合则输出
回文数就是从左往右看和从右往左看都是一样的,例如:12321 从右边往左边看还是12321
接下来就是如何把这些转换成编程的思维
正着和反着都一样,那就是这个数字反转后,和原来的值一样,那么,他就是回文数
数字反转的代码:
while(num > 0) { a = a * 10 + num % 10; //a的初始值为0 num = num / 10; }
例如:12321的反转
先加上12321 % 10 的值 , 也就是 1
之后,12321 / 10 = 1232
然后再进行循环
不过,1要先乘10 变成 10 之后 再加上 1232 % 10 = 2 ,所以最后的结果是12
然后 1232 / 10 = 123
之后一直这样的循环
直到12321被除成了0 , 就可以退出循环了
接下来还有一个题目的要求
就是这些回文数中的每一个数加起来,要为一开始输入的值
那我们就可以在之前的循环中,把每次模10的结果累加起来,再用这个数和一开始输入的数进行比较
看是否相同
参考代码:
#include <stdio.h> int main() { int n , num; scanf("%d", &n); for (int i = 10000; i <= 999999; i++) { int t = i,t2 = i; int sum = 0, num = 0; while (t > 0) { sum += t % 10; num = num * 10 + t % 10; t /= 10; } if (sum == n && num == i) printf("%d\n", i); } return 0; }
0.0分
11 人评分
C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:690 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:956 |
蚂蚁感冒 (C语言代码)浏览:1409 |
字符串比较 (C语言代码)浏览:771 |
1052题解(链表操作)浏览:782 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:646 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:826 |
WU-C语言程序设计教程(第三版)课后习题12.3 (C++代码)浏览:926 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1207 |
整数分类 oj上总是wrong answer浏览:688 |