A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tingfeng1992 中级黑马   /  2015-6-21 20:57  /  1245 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

“水仙花数”是一个 各个位立方之和等于该整数的三位数。如果要求水仙花数,必须得求出百位数、十位数和个位数,这也是此程序的关键步骤。
1、求出百位数a=num\100
2、求出十位数b=(num%100)\10
3、求出个位数c=num%10
分别求出这三个数后就简单了很多,结下来利用for循环求出所有水仙书
代码如下:#include <stdio.h>
int main()
{
    int i=0;
    int a=0,b=0,c=0;
    for(i=0;i<1000;i++)
    {
        a=i\100;
        b=(i%100)\10;
        c=i%10
        if(a*a*a+b*b*b+c*c*c==i)
            printf("%d",i);
    }
    return 0;
}

10 个回复

倒序浏览
都说是三位数了  i怎么不从100开始呢  
回复 使用道具 举报
c=i%10后面少个;
回复 使用道具 举报
本帖最后由 小年轻不见了 于 2015-6-21 21:44 编辑

#include <stdio.h>  int main ()
{     
        int i,j = 0,ge,shi,bai;
       for (i = 100; i<1000; i++)
       {         
            bai = i/100;         
           shi = i/10%10;            
           ge = i%10;      
           if (ge*ge*ge+shi*shi*shi+bai*bai*bai == i)        
          {            
                j++;  
               printf("%d\n",i);        
          }
     }     
printf("%d\n",j);  
return 0;   
}
回复 使用道具 举报
aSmallStone 发表于 2015-6-21 21:11
都说是三位数了  i怎么不从100开始呢

对,这点我忽略了
回复 使用道具 举报

对,可能是点错了删除了。
回复 使用道具 举报
小年轻不见了 发表于 2015-6-21 21:41
#include   int main ()
{     
        int i,j = 0,ge,shi,bai;

你这个是正确, 我用 shi=(i/100)%10求十位数的数也没有错。我太逗比了, 除号都写错了、、
回复 使用道具 举报
tingfeng1992 发表于 2015-6-23 21:56
你这个是正确, 我用 shi=(i/100)%10求十位数的数也没有错。我太逗比了, 除号都写错了、、 ...

搞错了,shi=(i%100)/10,源程序是这样写的,这种算法也没有错
回复 使用道具 举报
好样的,兄弟!加油!黑马再等着你!!!:victory:
回复 使用道具 举报

:handshake
回复 使用道具 举报
tingfeng1992 发表于 2015-6-23 21:50
对,可能是点错了删除了。

多多交流。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马