| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 825 人关注过本帖
标题:练习题 7
取消只看楼主 加入收藏
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
结帖率:94.64%
收藏
已结贴  问题点数:100 回复次数:1 
练习题 7
                                                            吸血鬼数字
"吸血鬼数字"是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。以两个0结尾的数字是不允许的,例如,下列数字都是"吸血鬼数字":
1260 = 21 * 60
1827 = 21 * 87
2187 = 27 * 81
写一个程序,找出4位数的所有吸血鬼数字(摘自Thinking in Java 4th Edition 第4章,练习题10)

我最近因受老师压迫,去学习Java EE了,所以只能抛开我挚爱的C,不过练习题还会继续发下去,今天在书上看到这题(当然代码我已经写出来了),这题对新手应该颇具挑战性,老手也可以复习一下。。。


参考答案:
程序代码:
#include <stdio.h>
#include <stdlib.h>

int get(int v, int index) {
    switch(index) {
    case 0 :
        return v / 1000 % 10;
    case 1 :
        return v / 100 % 10;
    case 2 :
        return v / 10 % 10;
    case 3:
        return v % 10;
    }
}

int main(void) {
    int v, r1, r2, r3, r4, r5, temp, compare[4];
    for(v = 1001; v < 10000; v++) {
        if(v % 100 == 0)
            continue;
        for(r1 = 10; r1 < 100; r1++) {
            for(r2 = 10; r2 < 100; r2++) {
                if(r1 * r2 == v) {
                    for(r3 = 0; r3 < 4; r3++)
                        compare[r3] = get(v, r3);
                    temp = r1 * 100 + r2;
                    for(r4 = 0; r4 < 4; r4++) {
                        for(r5 = 0; r5 < r3; r5++) {
                            if(compare[r5] == get(temp, r4)) {
                                while(r5 < r3 - 1) {
                                    compare[r5] = compare[r5 + 1];
                                    r5++;
                                }
                                r3--;
                                break;
                            }
                        }
                    }
                    if(!r3) {
                        printf("%d = %d * %d\n", v, r1, r2);
                    }
                }
            }
        }
    }
    system("pause");
    return 0;
}
其实这道题的主要目的是为了练习循环,因为这道题是流程控制的练习题。


[ 本帖最后由 lz1091914999 于 2011-7-7 16:53 编辑 ]
搜索更多相关主题的帖子: 学习Java 吸血鬼 练习题 
2011-07-06 20:50
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
输出格式应该是:
%d = %d * %d

My life is brilliant
2011-07-07 08:36
快速回复:练习题 7
数据加载中...
 
   



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

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