| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 864 人关注过本帖
标题:小弟又来烦各位大哥,大姐了!求指导!
只看楼主 加入收藏
never_yzq
Rank: 4
等 级:业余侠客
帖 子:112
专家分:213
注 册:2012-5-25
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:13 
小弟又来烦各位大哥,大姐了!求指导!
题目:输出所有的水仙花数,水仙花数是三位十进制数,该树的各位数字立方之和等于本身大小,例如:153=1*1*1+5*5*5+3*3*3!求指导!
#include<stdio.h>
#include<math.h>
main()
{
    int a,b,c,d;
    a=b*100+c*10+d;
    for(b=1;b<=9;b++)
    {
        for(c=0;c<=9;c++)
        {
            for(d=0;d<=9;d++)
            {
              if(a==b*b*b+c*c*c+d*d*d)
               
                 printf("%d",a);
                 printf("\n");   
               
            }
        }
    }

}
搜索更多相关主题的帖子: 十进制 水仙花 include 大哥 
2012-06-05 18:18
hkvmonkey
Rank: 2
等 级:论坛游民
帖 子:35
专家分:53
注 册:2012-3-18
收藏
得分:10 
程序代码:
#include<stdio.h>
#include<math.h>
main()
{
    int a,b,c,d;
    //a=b*100+c*10+d; 这条语句不需要,因为你之前的b,c,d都没有赋值
    for(b=1;b<=9;b++)//以下三个for循环可以将百,十,个位各数字完全遍历,然后 在if语句中实现判断。但是,在if之前,少了点东西
    {
        for(c=0;c<=9;c++)
        {
            for(d=0;d<=9;d++)
            {      a=b*100+c*10+d;    //在此if之前,请重新添加上面被注释掉的语句,即在每个循环情况下,都需要求取 a
              if(a==b*b*b+c*c*c+d*d*d)               
                 printf("%d",a);
                 printf("\n");   
               
            }
        }
    }

}
2012-06-05 18:25
hkvmonkey
Rank: 2
等 级:论坛游民
帖 子:35
专家分:53
注 册:2012-3-18
收藏
得分:0 
再给你补一个不同方法的程序
程序代码:
#include"stdio.h"
main()
{
    int i,gw,sw,bw;
    for(i=100;i<=999;i++)
    {
        gw=i%10;
        sw=i/10%10;
        bw=i/100;
        if(i==gw*gw*gw+sw*sw*sw+bw*bw*bw)
            printf("%d\n",i);
    }


}
2012-06-05 18:29
never_yzq
Rank: 4
等 级:业余侠客
帖 子:112
专家分:213
注 册:2012-5-25
收藏
得分:0 
十分感谢,我会更加努力!
2012-06-05 18:33
never_yzq
Rank: 4
等 级:业余侠客
帖 子:112
专家分:213
注 册:2012-5-25
收藏
得分:0 
回复 2楼 hkvmonkey
好像第一种方法不行啊,你第二种能行,能再看看第一种为啥不行吗?小弟谢过了!
2012-06-05 22:02
demonleer
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:10
帖 子:483
专家分:1225
注 册:2012-6-4
收藏
得分:0 
程序代码:
#include<stdio.h>
//纯属娱乐
int daffodil(int target)
{
    if (target==0)
    {
        return 0;
    }
    int i = target%10;
    return i*i*i+daffodil(target/10);
}

void main()
{
    int i = 100;
    for (; i<1000; i++)
    {
        i==daffodil(i)?(printf("%d\n",i)):i;
    }
}
2012-06-05 22:26
千古一人
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-6-5
收藏
得分:0 
#include<stdio.h>
#include<math.h>
main()
{
    int a,b,c,d;
    //a=b*100+c*10+d; 这条语句不需要,因为你之前的b,c,d都没有赋值
    for(b=1;b<=9;b++)//以下三个for循环可以将百,十,个位各数字完全遍历,然后 在if语句中实现判断。但是,在if之前,少了点东西
    {
        for(c=0;c<=9;c++)
        {
            for(d=0;d<=9;d++)
            {      a=b*100+c*10+d;    //在此if之前,请重新添加上面被注释掉的语句,即在每个循环情况下,都需要求取 a
              if(a==b*b*b+c*c*c+d*d*d)               
                 printf("%d\n",a);
                 //printf("\n");   
               
            }
        }
    }

}

这样好像行了
2012-06-05 22:46
never_yzq
Rank: 4
等 级:业余侠客
帖 子:112
专家分:213
注 册:2012-5-25
收藏
得分:0 
为什么这样就对了?
2012-06-05 22:59
never_yzq
Rank: 4
等 级:业余侠客
帖 子:112
专家分:213
注 册:2012-5-25
收藏
得分:0 
回复 7楼 千古一人
为什么这样就对了,不明白!
2012-06-05 22:59
怪敏宝宝
Rank: 1
等 级:新手上路
帖 子:5
专家分:6
注 册:2012-6-6
收藏
得分:0 
第一种方法中的printf("\n");语句会不停的输出,所以其实输出了那几个数字但看不到因为有太多的换行了,只要改成
#include<stdio.h>
#include<math.h>
main()
{
    int a,b,c,d;
   
    for(b=1;b<=9;b++)
    {
        for(c=0;c<=9;c++)
        {
            for(d=0;d<=9;d++)
            {
                a=b*100+c*10+d;

                if(a==b*b*b+c*c*c+d*d*d)
                    printf("%5d",a);
                 
                  
               
            }
        }
    }
    printf("\n");


}
就可以了
2012-06-06 17:46
快速回复:小弟又来烦各位大哥,大姐了!求指导!
数据加载中...
 
   



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

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