C语言回文数,由于超时提交不了

(提交上去总说我超时,求大佬帮帮我!!!解决了有重筹)
题目:
一个正整数 n (10< n< 100), 表示要求满足的数位和。
输出
若干行,每行包含一个满足要求的5位或6位整数。
数字按从小到大的顺序排列。
如果没有满足条件的,输出:-1
样例输入
44
样例输出
99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499

我的答案:
#include<stdio.h>
int huiwen(int n)
{
int x, s = 0;
x = n;
while (1)
{
s = s * 10 + x % 10;
x = x / 10;
if (s == n)
{
return 1;
break;
}
}

}

int main()
{
int sum, i;
scanf("%d", &sum);
for (i = 10000; i < 1000000; i++)
{
if (huiwen(i) == 1)
{
if ((i % 10 * 2 + i / 10 % 10 * 2 + i / 100 % 10) == sum)
printf("%d", i);
else if ((i % 10 * 2 + i / 10 % 10 * 2 + i / 100 % 10) == sum)
printf("%d", i);
else
printf("-1");
}
}

}

你题目的解答代码如下:

#include <stdio.h>
int huiwen(int n,int m)
{
    int x, s = 0, t=0;
    x = n;
    while (x>0)
    {
        t = t + x % 10;
        s = s * 10 + x % 10;
        x = x / 10;
    }
    if (s == n && t==m)
        return 1;
    else
        return 0;
}

int main()
{
    int sum, i,cou = 0;
    scanf("%d", &sum);
    for (i = 10000; i < 1000000; i++)
    {
        if (huiwen(i,sum) == 1)
        {
            printf("%d\n", i);
            cou++;
        }
    }
    if (cou==0)
        printf("-1");
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

首先子函数里的if没有设置return 0,加个else就好。
其次主函数的else if的验证表达式最后一项少乘2
还有应该设置个计数变量,如果回文数计数为0,才输出-1

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632