解题思路:主函数用for循环i从10000~999999,判断函数judge(i)内,(1)先分五位数和六位数两种情况判断是不是回文数字,是->flag=1,否->直接返回0(这个放到下面的判断中的else);(2)判断该回文数字(flag=1)的各个数位之和是否等于输入的整数,是->直接返回1,否->直接返回0。
注意事项:主函数最后要判断一下,不符合题目条件的要输出-1,这个不能忘记。
参考代码:
#include<stdio.h>
int judge(int long number,int n)
{
int a,b,c,d,e,f;
int sum;
int flag=0;
int num=number;
f=number%10;//个
number=number/10;
e=number%10;//十
number=number/10;
d=number%10;//百
number=number/10;
c=number%10;//千
number=number/10;
b=number%10;//万
number=number/10;
a=number%10;//十万
//判断是否是回文数字
if(num<100000)
{
if(b==f&&c==e)
{
flag=1;
}
}
else
{
if(a==f&&b==e&&c==d)
{
flag=1;
}
}
//判断该回文数字的各个数位之和是否等于输入的整数
if(flag==1)
{
sum=a+b+c+d+e+f;
if(sum==n)
{
return 1;
}
else
{
return 0;
}
}
else
{
return 0;
}
}
int main()
{
int n;
int long i;
scanf("%d",&n);
int p=0;
for(i=10000;i<1000000;i++)
{
if(judge(i,n))
{
p=1;
printf("%ld\n",i);
}
}
if(p==0)
{
printf("-1");
}
return 0;
}
0.0分
0 人评分