前言:
通过对蓝桥杯真题回文数字的讲解,引出关于三种回文判断的方式:数组或字符串、栈、直接反转数字。
目录
蓝桥杯题目:回文数字
观察数字:12321,123321 都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。
本题要求你找到一些5位或6位的十进制数字。满足如下要求:
该数字的各个数位之和等于输入的整数。
题目分析:
根据题目要求,我们了解到我们需要进行判断操作的数的范围是五位数到六位数,即10000到999999,也就是我们首先要生成这些数字,其次这些数字需要满足两个条件。
第一个条件:个数位之和等于我们输入的整数;
第二个条件:回文。
所以我们根据以上分析进行代码实现。
一、数组或字符串判断回文:
int main() { int n = 0; scanf("%d", &n); int num = 0; //生成数字 for (num = 10000; num <= 999999; num++) { int tmp = num; int sum = 0; int count = 0; //计算位数之和 while(tmp) { sum += tmp % 10; tmp /= 10; //统计位数 count++; } //判断回文 int arr[6] = { 0 }; tmp = num; int i = 0; for (i = 0; i < count; i++) { arr[i] = tmp % 10; tmp /= 10; } int flag = 1; for (i = 0; i < count / 2; i++) { if (arr[i] != arr[count - i - 1]) flag = 0; } //判断是否同时满足两个条件,并输出 if (sum == n && flag==1) { printf("%d\n", num); } } return 0; }