主题:为啥它不输出答案呢
梦梦学编程
[专家分:10] 发布于 2011-03-05 16:34:00
#include <stdio.h>
#include <math.h>
void main( )
{int t,i,n;
double sum=0;
for(i=100;i<=999;i++)
{t=i;
while(t!=0)
{n=t%10;
t=t/10;
sum=sum+pow(n,3);
}
if(sum==i)
printf("%d",i);
}
}
我写的水仙花数程序,为什么没有输出、?
回复列表 (共2个回复)
沙发
windy0will [专家分:2300] 发布于 2011-03-05 20:36:00
没有输出有2个原因:
1. double sum=0; sum是浮点数,在运算过程中会引入误差,所以可能会影响if(sum==i)(最好不要判断浮点数是不是相等)这个判断,但我试了一下,这个程序并没有影响:[code=c]
for(i=100;i<=999;i++)
{t=i;
sum = 0.0; /*** 加上这一句应该可以正确输出了 ***/
while(t!=0)
{n=t%10;
t=t/10;
sum=sum+pow(n,3);
}[/code]。
2. 每次重新进入循环以后,sum的值并没有重置为0,那么sum将把前面不该算进来的值都算进来了。
还有,楼主您应该要注意一下缩进,有些地方多写个空格可能看起来更可读。
[code=c]
#include <stdio.h>
int main ( void )
{
int walk, b2, b1, b0;
for ( walk = 99; ++ walk < 1000; )
{
b0 = walk % 10; /* 个位 */
b2 = walk / 100; /* 百位 */
b1 = walk / 10 % 10; /* 十位 */
if ( walk == b0*b0*b0 + b1*b1*b1 + b2*b2*b2 ) /* 水仙数? */
printf ( "%4d", walk );
}
return 0;
}
[/code]
板凳
梦梦学编程 [专家分:10] 发布于 2011-03-05 22:29:00
非常感谢哈:)
我来回复