一、题目
现在要从5位数的十进制数字中找出各个数位之和等于n的回文数字
输入格式:
输入一个整数n
输出格式
输出所有各个数位之和等于n的5位数,数字按从小到大的数序排列
样例输入
33
样例输出
二、解答
通过此次代码联系,我知道了如何找出范围内的回文数字,及逐位输出,更为系统的是,懂得在循环当中,什么需要重置,以免代码出问题!
三、源码及注释
#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<cstdlib> #include<ctime> using namespace std; int main() { int data = 0; cin >> data; int s1[10005]; int s2[10005];//存储回文数字 int s3[10005];//存储符合条件的回文数字 int q = 0;//存储回文数字的个数 int q_ = 0;//存储符合条件回文数字的个数 for (int i=10000;i<100000;i++) { int n = 0; int m = i; while (m!=0) { s1[n++] = m % 10;//每次循环之后n要重置! m /= 10; } if (s1[0] == s1[4] && s1[1] == s1[3]) { s2[q++] = i;//存储所有的回文数字 } } //判断回文数字是否符合条件 for (int i=0;i<q;i++) { int ret = 0;//同理,每次循环之后ret也要重置 int j = s2[i]; while (j!=0) { ret += j % 10; j /= 10; } if (ret == data) { s3[q_++] = s2[i]; } } for (int i=0;i<q_;i++) { cout << s3[i] << ' '; } return 0; }