标题:求三位水仙花数少输出一个
只看楼主
luokaisong13
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-10-13
结帖率:100%
已结贴  问题点数:20 回复次数:4 
求三位水仙花数少输出一个
各位大神,在求水仙花数时老是少输出一个,查了好久没查不问题,最后发现改成逐个相乘才可以,请问为什么?假如是要求十位数的水仙花数,那不是要累死?
程序如下:
#include <stdio.h>
#include <math.h>
int main()
{
   int number=100,i=0,j=0,k=0;
 while(number>=100&&number<=999)
  {
      i=number/100;
      j=(number%100)/10;
      k=number%10;
    if(pow(i,3)+pow(j,3)+pow(k,3)==number)
    //if(i*i*i+j*j*j+k*k*k==number)(改成这样才可以)
            {
                printf("%d\t",number);
                number++;
            }
     else
       number++;
  }
 printf("\n");
 return 0;
}
搜索更多相关主题的帖子: include number 水仙花 
2014-10-16 12:29
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
得分:20 
关于这个问题,个人认为是pow()函数的返回值的问题.
对于pow(),不同的编译器处理方式是不同的,造成结果存在一定的误差.

有的定义返回值是double, 有的定义返回值为float,所以结果会有差异.

代码测试环境:  WinXP+C-Free5.0.
2014-10-16 12:40
luokaisong13
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-10-13
得分:0 
回复 2 楼 vvvcuu
原来是这样,谢谢指教
2014-10-16 13:04
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
用乘法替换除法 本来也是正道

DO IT YOURSELF !
2014-10-16 13:37
fogmaple
Rank: 4
来 自:江西省赣州市于都县
等 级:业余侠客
威 望:1
帖 子:119
专家分:233
注 册:2014-7-28
得分:0 
以下是引用wp231957在2014-10-16 13:37:47的发言:

用乘法替换除法 本来也是正道

 支持
2014-10-16 13:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-437317-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.100704 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved