比较简单,只不过是很多循环
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
int found = 0; // 用于标记是否找到回文数字
// 这里我们把5和6位回文数字分开寻找,因为我不会合在一起
// 我们先找5位回文数字
for (int a = 1; a <= 9; a++) { // 首位不能为0,这是常识,所以i从1开始遍历
for (int b = 0; b <= 9; b++) { //这里在定下一个数后紧接着用第二个循环找第二个数,找到后在判断符不符合和为n
for (int c = 0; c <= 9; c++) {
int num = a * 10000 + b * 1000 + c * 100 + b * 10 + a;
int sum = a + b + c + b + a; // 计算各位数之和,这里巧妙地将验证n放在了后边,避免出错
if (sum == n) {
printf("%d\n", num);
found = 1;//标定,已经找到了5位回文数字
}
}
}
}
// 遍历6位回文数字,结构差不多,只不过多了一位而已,自己看吧
for (int a = 1; a <= 9; a++) { // 首位不能为0
for (int b = 0; b <= 9; b++) {
for (int c = 0; c <= 9; c++) {
int num = a * 100000 + b * 10000 + c * 1000 + c * 100 + b * 10 + a;
int sum = a + b + c + c + b + a; // 计算各位数之和
if (sum == n) {
printf("%d\n", num);
found = 1;
}
}
}
}
if (!found) { //这里是如果56位都没找到那就输出-1否则正常输出
printf("-1\n");
}
return 0;
}
标签:include,数字,int,可以,main,scanf,回文
From: https://blog.csdn.net/2401_88677174/article/details/143956476