解题思路:先将数字各位相加,在判断之和是否与n相等,相等在进行下一步---判断是否为回文,利用数组将各位存放在数组中,依次比较。
注意事项:要考虑数字的位数,和不存在的情况---利用一个变量flag
参考代码:
#include<stdio.h>
#include<string>
int flag=0;//判断不存在的情况
int huiwen(int a[], int sum, int n)
{
if (sum == n)//先判断各位之和是否相等
{
if (a[0] != 0)//在判断是几位数--6位
{
for (int j = 0; j < 3; j++)//判断是否为回文
{
if (a[j] != a[6 - j - 1])
return 0;
}
flag = 1;
return 1;
}
else //五位
{
for (int j = 1; j < 3; j++)//判断是否为回文
{
if (a[j] != a[6 - j])
return 0;
}
flag = 1;
return 1;
}
}
else
return 0;
}
int main()
{
int n;
int sum=0;
int a[6] = { 0,0,0,0,0,0 };
scanf("%d", &n);
for (int i = 10000; i < 1000000; i++)
{
a[0] = i / 100000;
a[1] = i % 100000 / 10000;
a[2] = i % 100000 % 10000 / 1000;
a[3] = i % 100000 % 10000 % 1000 / 100;
a[4] = i % 100000 % 10000 % 1000 % 100 / 10;
a[5] = i % 100000 % 10000 % 1000 % 100 % 10 / 1;
sum = a[0]+ a[1] + a[2] + a[3] + a[4] + a[5] ;
if (huiwen(a,sum,n) == 1)
printf("%d\n", i);
else if (huiwen(a,sum,n) == 0)
;
}
if (flag == 0)
printf("-1\n");
return 0;
}
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复