求帮看一下这个代码为什么运行不出来结果

回归数是一种特殊的n位数,各位数字的n次幂之和恰好等于它自身,如:
153=1^3+5^3+3^3
1634=1^4+6^4+3^4+4^4
54748=5^5+4^5+7^5+4^5+8^5
试编写一个函数short regress(int num)判断num是否是回归数。要求在main函数中调用regress函数寻找所有的3次幂回归数(又称“水仙花数”),并控制每行2个进行输出显示。

#include<stdio.h>
#include<stdlib.h>
short regress(int num)
{
int a,b,c;
a=num%10;
num/=10;
b=num%10;
c=num/10;
if(num==(aaa+bbb+ccc))
return num;
else
return 0;
}
void main(void)
{
int n,num;
for(n=100;n<1000;n++)
{
num=regress(n);
if(num!=0)
{
printf("%d\n",num);
}
}
system("pause");
}

代码改成如下:


#include<stdio.h>
#include<stdlib.h>
#include<math.h>  //添加包含pow函数的头文件
short regress(int num)
{
    int a, b, c;
    a = num % 10;
    b = num /10%10;        //不应该改变num的值,你之前的num/=10改变了num的值,这样你在下面的等式会出错
    c = num/100;
    if (num == (pow(a,3) + pow(b, 3) + pow(c,3)))  //使用pow函数
        return num;
    else
        return 0;
}
void main(void)
{
    int n,num;
    for (n = 152; n < 1000; n++)
    {
        num = regress(n);
        if (num != 0)
        {
            printf("%d\n", n);  //应该输出n
        }
    }
}

修改见注释,供参考:

#include<stdio.h>
#include<stdlib.h>
short regress(int num)
{
    int a,b,c;
    a=num%10;
             //num/=10;
    b=num/10%10;
    c=num/100;
    if(num==(a*a*a+b*b*b+c*c*c))
        return 1;//return num;
    else
        return 0;
}
void main(void)
{
    int n,num,i=0;
    for(n=100;n<1000;n++)
    {
       num=regress(n);
       if(num!=0)
       {
          printf(" %d",n);  // printf("%d\n",num);
          i++;
          if(i%2==0) printf("\n");
       }
    }
    system("pause");
}