求解答一下这道c语言!!

打印输出1~9999以内的所有满足水仙花数(Narcissistic number)条件的数,要求数字之间用逗号分隔,且每输出2个数换一行。所谓水仙花数即数的每位组成数字的立方的和等于这个数本身。
水仙花数
112=1^3+1^3+2^3;
234 = 2^3 + 3^3 + 4^3
1254 =1^3 + 2^3 +5^3 +4^3

#include<stdio.h>
#include<math.h>
int main()
{
    int i = 1;
    for (i = 1; i <= 9999; i++)
    {
        int  count = 0, a = 0,sum=0;//在每个循环的开始需要初始化识别数字位数
        a = i;//防止i变化导致程序混乱
        while (a != 0)
        {
            a = a / 10;
            count++;
        }
        //确定i的位数
        a = i;//重新赋值,开始使用i
        while (a != 0)
        {
            sum += pow((double)(a%10), (double)count);//使用pow函数,用while函数求每一位数次方之和
            a = a / 10;//开始计算下一位数

        }
        if (sum == i)//判定结果
        {
            printf("%d\n", i);
        }


    }
    return 0;
}


112=1^3+1^3+2^3;
234 = 2^3 + 3^3 + 4^3
1254 =1^3 + 2^3 +5^3 +4^3
这几个等式不成立啊?

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^