梓由衣步兵:C语言,关于水仙花数的问题

来源:百度文库 编辑:神马品牌网 时间:2024/05/02 04:36:12
水仙花数的定义如下:指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。
现将3位数扩展为n位数,n由用户输入。

我的程序我没看出来任何问题,但是只有在n=4以下的数字是运行才正常,4以上时好像就进入死循环了。
请高手指点!

我的程序如下:
#include<stdio.h>
#include<math.h>

int cub(int i)
{
int m=0;
while(i!=0)
{m=m+pow(i%10,3);
i/=10;
}
return (m);
}

main()
{
int n,i;
scanf("%d",&n);
for(i=pow(10,n-1);i<pow(10,n);i++)
if(i==cub(i)) printf("%d\n",i);
}

pow(10,n)在n>4后超出了int值的范围,用long类型可以

int不能用啦。
n<=32767正常,否则出错,
你经管输入的是正数,但是系统看来n是一个负数啦