回 帖 发 新 帖 刷新版面

主题:为啥它不输出答案呢

#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个回复)

沙发

没有输出有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]

板凳


非常感谢哈:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册