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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© donkey2 中级黑马   /  2014-11-11 14:27  /  1775 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 donkey2 于 2014-11-15 10:01 编辑


/*
编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。
*/
// 根据题目的意思,应该是 abc = a^3 + b^3 + c^3 这样的一个三位整数。
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
//        NSLog(@"Hello, World!");
        int abc = 100;
        int a,b,c;


        for (;abc < 1000 ; abc ++) {
            a = abc / 100;
            b = (abc - a * 100)/10;
            c = (abc - a * 100 - b * 10 );
            if(abc == (a*a*a + b*b*b + c*c*c)){
                NSLog(@"水仙花数为 %i",abc);
                continue;}
        }
    }
    return 0;
}

遇到的问题:
1. 先前把 a = 。。。b=。。。 c=。。。写在了for循环的外面,导致b,c的值总是0,得不到想要的结果。
2. 指数函数pow(a,3), 可以用,不要用 a^3, 这个是位运算符,得到的不是想要的结果。
3. 打印的结果:
2014-11-11 14:23:41.684 练习-3[9473:303] 水仙花数为 153
2014-11-11 14:23:41.685 练习-3[9473:303] 水仙花数为 370
2014-11-11 14:23:41.685 练习-3[9473:303] 水仙花数为 371
2014-11-11 14:23:41.686 练习-3[9473:303] 水仙花数为 407

每一次都出现“水仙花数为”,不觉得很恶心么?

要改成“水仙花数为:153,370,371,407”,怎么改呢?
思考一下!

5 个回复

正序浏览
爱学习的小明 发表于 2014-11-11 19:13
class  shuixianhuashu
{
        public static void main(String[] args)

我也是初学者,相互学习哈。
NSLog 是Objective-c语言里的printf函数,区别自带换行,
而且有一些附加信息,例如 2014-11-11 14:23:41.684 练习-3
回复 使用道具 举报
写的好,值得学习
回复 使用道具 举报
class  shuixianhuashu
{
        public static void main(String[] args)
        {
        int count = 0;
        for (int x=1;x>=1 && x<=9 ;x++ )
        {
                for (int y=0;y>=0 && y<=9; y++ )
                {
                        for(int z=0;z>=0 && z<=9; z++ )
                        {
                                if (x*100+y*10+z==x*x*x+y*y*y+z*z*z)
                                {
                                        System.out.println(x*100+y*10+z);
                                        count++;
                                }       
                        }
                }
        }
        System.out.println("水仙花个数="+"count");
        }
}
我写的代码,怎么看不懂楼主的,NSLog是什么,初学者请指教
回复 使用道具 举报
说起来真是又很多回忆吧,趁着自己还算年轻,多学点东西吧。别留下遗憾,带着伤感来回忆这一切。
回复 使用道具 举报

1. continue 要不要都无所谓了。2. 题目要求还要统计个数,所以需要加一个计数器。
3. 针对每次都打印出“水仙花数为”的问题。
   额。。先写成,“找到一个水仙花数为 5%”, 不要鄙视我。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马