一开始我是不知道水仙花数是3位数以上的,所以就写了一个求位数的模块(我也是醉了,如果知道,就不用这么麻烦)
开始代码:
#include<stdio.h>
#include<math.h>
int count(int i)
{
int count = 0,remainder = 0;
while(i != 0)
{
remainder = i%10;
i = i/10;
count++;
}
return count;
}
//求位数!
int main()
{
int i = 0,j = 0,sum = 0,remainder = 0;
for(i=10;i<1000;i++)
{
j = count(i);
while(k != 0)
{
remainder = k%10;
k = k/10;
sum += pow(remainder,j);
}
if(i == sum)
{
printf("%d\n",i);
}
}
return 0;
}
感悟:当调试代码时,就出现了死循环,怎么也打不到错误在哪,后来进行断点调试时才发现for循环里的“i”和“sum”是一直变化的!
改正后的主函数:int main()
{
int i = 0,j = 0,k = 0,sum = 0,remainder = 0;
for(i=10;i<1000;i++)
{
k = i;
sum = 0;
j = count(i);
while(k != 0)
{
remainder = k%10;
k = k/10;
sum += pow(remainder,j);
}
if(i == sum)
{
printf("%d\n",i);
}
}
return 0;
}
此博客后来补上的,之前不会操作,嘿嘿......