`

金山笔试题(2013)之LED数字显示

阅读更多

1、从键盘任意输入0-9之间的任意一个数字,显示数字的电子格式

 

import java.util.Scanner;
/*
A, B, C, D 表示数字的各二进制位
a, b, c, d, e, f, g 表示 LED 的各段,为 1 时该段显示,为 0 时该段不显示
 
      a
   #######
   #     # b
 f #  g  #
   #######
   #     # c
 e #     # 
   #######
      d
 
+---+---+---+---+---+  +---+---+---+---+---+---+---+
|   | A | B | C | D |  | a | b | c | d | e | f | g |
+---+---+---+---+---+  +---+---+---+---+---+---+---+
| 0 | 0 | 0 | 0 | 0 |  | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
+---+---+---+---+---+  +---+---+---+---+---+---+---+
| 1 | 0 | 0 | 0 | 1 |  | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
+---+---+---+---+---+  +---+---+---+---+---+---+---+
| 2 | 0 | 0 | 1 | 0 |  | 1 | 1 | 0 | 1 | 1 | 0 | 1 |
+---+---+---+---+---+  +---+---+---+---+---+---+---+
| 3 | 0 | 0 | 1 | 1 |  | 1 | 1 | 1 | 1 | 0 | 0 | 1 |
+---+---+---+---+---+  +---+---+---+---+---+---+---+
| 4 | 0 | 1 | 0 | 0 |  | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
+---+---+---+---+---+  +---+---+---+---+---+---+---+
| 5 | 0 | 1 | 0 | 1 |  | 1 | 0 | 1 | 1 | 0 | 1 | 1 |
+---+---+---+---+---+  +---+---+---+---+---+---+---+
| 6 | 0 | 1 | 1 | 0 |  | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
+---+---+---+---+---+  +---+---+---+---+---+---+---+
| 7 | 0 | 1 | 1 | 1 |  | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
+---+---+---+---+---+  +---+---+---+---+---+---+---+
| 8 | 1 | 0 | 0 | 0 |  | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
+---+---+---+---+---+  +---+---+---+---+---+---+---+
| 9 | 1 | 0 | 0 | 1 |  | 1 | 1 | 1 | 1 | 0 | 1 | 1 |
+---+---+---+---+---+  +---+---+---+---+---+---+---+
*/
public class Num2LEDTest {
 
    public static void main(String[] args) {
        LED led = new LED();
        Scanner in=new Scanner(System.in);
        String LEDStr=in.nextLine();
        char[][] chss = led.getLED(LEDStr);
        LED.print(chss);
    }
}
 
class LED {
     
    /**
     * 每个 LED 的大小,可以进行调整
     */
    public final static int ROW = 7;
    public final static int COL = 7;
     
    /**
     * 每个 LED 的间隔
     */
    private final static int SEPARATOR = 1;
         
    private final static char FILL_CHAR = '#';
    private final static char SPACE_CHAR = ' ';
     
    /**
     * 工具方法,用于输出 LED
     * @param chs
     */
    public static void print(char[][] chs) {
        for(int i = 0; i < chs.length; i++) {
            for(int j = 0; j < chs[i].length; j++) {
                System.out.print(chs[i][j]);
            }
            System.out.println();
        }        
    }
     
    /**
     * 根据数字得到 LED 显示数组
     * @param num
     * @return
     */
    public char[][] getLED(String num) {
        char[] chs = num.toCharArray();
        char[][][] chsss = new char[chs.length][][];
        for(int i = 0; i < chs.length; i++) {
            chsss[i] = showLed(chs[i] - '0');
        }
        return putManyLed(chsss);
    }    
     
    /**
     * 将多个 LED 组成一排
     * @param chsss
     * @return
     */
    private char[][] putManyLed(char[][][] chsss) {
        if(chsss.length < 1) {
            throw new IllegalArgumentException("LED is NULL!");
        }
        if(chsss.length == 1) {
            return chsss[0];
        }
        char[][] chss = new char[ROW][chsss.length * (COL + SEPARATOR) - SEPARATOR];
        for(int i = 0; i < chsss.length; i++) {
            int m = i * (COL + SEPARATOR);
            for(int j = 0; j < chsss[i].length; j++) {                
                for(int k = 0; k < chsss[i][j].length; k++) {
                    chss[j][m + k] = chsss[i][j][k];
                }
            }
        }
        for(int i = 0; i < chss.length; i++) {
            for(int j = 0; j < chss[i].length; j++) {
                if(chss[i][j] != FILL_CHAR) {
                    chss[i][j] = SPACE_CHAR;
                }
            }
        }
        return chss;
    }
     
    /**
     * 
     * @param num
     * @return
     */
    private char[][] showLed(int num) {
        boolean[] b = getLed(num);
        char[][] chs = new char[ROW][COL];
        if(b[0])
            for(int i = 0; i < COL; i++) chs[0][i] = FILL_CHAR; 
        if(b[1])
            for(int i = 0; i <= ROW / 2; i++) chs[i][COL - 1] = FILL_CHAR;
        if(b[2])
            for(int i = ROW / 2; i < ROW; i++) chs[i][COL - 1] = FILL_CHAR;
        if(b[3])
            for(int i = 0; i < COL; i++) chs[ROW - 1][i] = FILL_CHAR;
        if(b[4])
            for(int i = ROW / 2; i < ROW; i++) chs[i][0] = FILL_CHAR;
        if(b[5])
            for(int i = 0; i <= ROW /2; i++) chs[i][0] = FILL_CHAR;
        if(b[6])
            for(int i = 0; i < COL; i++) chs[ROW / 2][i] = FILL_CHAR;        
        return chs;
    }
     
    /**
     * 译码器
     * 
     *       0
     *    #######
     *    #     # 1
     *  5 #  6  #
     *    #######
     *    #     #
     *  4 #     # 2
     *    #######
     *       3
     * 
     * 0 表示 leds[0],若为 true 表示该 LED 显示,否则不显示
     * 
     * @param num
     * @return
     */
    private boolean[] getLed(int num) {        
        boolean a = (num & 8) >>> 3 == 1;
        boolean b = (num & 4) >>> 2 == 1;
        boolean c = (num & 2) >>> 1 == 1;
        boolean d = (num & 1) == 1;
        boolean[] leds = new boolean[7];
        leds[0] = (!a & !b & !c & d) | (b & !d);
        leds[1] = (b & !c & d) | (b & c & !d);
        leds[2] = !b & c & !d;
        leds[3] = (b & !c & !d) | (!b & !c & d) | (b & c & d);
        leds[4] = d | (b & !c);
        leds[5] = (c & d) | (!b & c) | (!a & !b & d);
        leds[6] = (!a & !b & !c) | (b & c & d);
        for(int i = 0; i < 7; i++) {
            leds[i] = !leds[i];
        }
        return leds;
    }
}


运行截图

 

 

2、L"string"转换成_X("string")怎么实现,可利用一些文本编辑的工具。

此题求网友给出答案

 

3、有head1.h,head2.h,src1.cpp,src2.cpp,main.cpp怎么整合生成可执行文件xxx.exe或xxx,请写出具体步骤和编译执行过程。

我是用makefile加上gcc做的:

xxx: src1.o src2.o main.cpp
gcc xxx -o main.cpp
src1.o : head2.h src2.cpp
gcc -c src2.cpp -o src2.o
src1.o : head1.h src1.cpp
gcc -c src1.cpp -o src1.o

分享到:
评论

相关推荐

    金山笔试金山笔试题目很准确。金山笔试题。

    4. **逻辑思维与问题解决**:金山笔试会包含一些逻辑推理题,要求考生在有限时间内找出最优解。这可能涉及到数学逻辑、条件判断、递推关系等问题,锻炼抽象思维和逻辑分析能力。 5. **软件工程知识**:了解软件开发...

    金山笔试题(Java方向)

    【标题】:“金山笔试题(Java方向)”指的是金山公司在2012年针对校园招聘进行的Java编程技能测试题目。这些题目旨在考察应聘者对于Java编程语言的基础知识、编程能力以及解决实际问题的能力。 【描述】:“金山...

    金山网上笔试题

    金山网上笔试题,6月分,珠海金山的网上笔试题,都是些算法的

    金山软件·西山居游戏 笔试试题

    金山软件·西山居游戏 笔试试题

    金山2010校园招聘技术类Java笔试题

    【标题】"金山2010校园招聘技术类Java笔试题"揭示了这是一份针对2010年金山公司校园招聘技术岗位的Java编程能力测试题目。金山是一家知名的中国软件公司,其招聘过程通常会涉及到对技术人才的深度评估,尤其是对于...

    金山软件2011年C++工程师笔试试题

    【金山软件2011年C++工程师笔试试题】涉及到多个C++核心概念和技术,包括: 1. **虚析构函数**:在C++中,虚析构函数用于处理多态性,确保基类指针可以正确地销毁派生类对象。当基类指针指向派生类对象时,如果基类...

    毕业就也之-----金山笔试题

    这段代码是关于组合和递归算法的,主要讨论如何找出一组数字的所有可能组合,并计算它们的和,以解决金山公司的笔试题目。以下是相关的知识点: 1. **数组与指针**: - `Num[]` 和 `Resoult[]` 是整型数组,用于...

    金山软件工程师(java)笔试试题

    【金山软件工程师(Java)笔试试题解析】 金山软件,作为中国知名的技术驱动型企业,其在软件开发领域有着深厚的积累,尤其是对Java技术的应用。针对“金山软件工程师(Java)笔试试题”,我们可以从中抽取出一系列...

    金山2010测试笔试题

    ### 金山2010测试笔试题解析 #### 常量(const)的使用方法及其重要性 在C++编程中,`const` 关键字用于定义不可更改的变量、对象或者指针,以增强代码的安全性和可读性。本节将详细探讨`const`的不同用途及其在实际...

    2014金山WPS部分笔试题

    【金山WPS部分笔试题】相关知识点详解 金山WPS是一款由金山软件开发的办公软件套件,它包含了文字处理(WPS文字)、电子表格(WPS表格)和演示文稿(WPS演示)等组件,与Microsoft Office具有类似的界面和功能,但...

    金山公司2014校园招聘你笔试题

    【标题】:“金山公司2014校园招聘你笔试题”揭示了这是一份与2014年金山软件公司校园招聘相关的C++编程能力测试题目。金山软件是一家知名的中国IT企业,以其在软件开发,尤其是游戏开发和办公软件领域的贡献而著称...

    金山2011年校园招聘C++笔试题

    【金山2011年校园招聘C++笔试题】是一场针对应届毕业生的招聘活动,由知名软件企业金山公司组织,旨在寻找具有优秀C++编程技能的潜在人才。这次笔试对于那些热衷于C++编程并希望在IT行业内,尤其是金山这样的专业...

    金山2010年9月校园招聘WPS服务端(C++)笔试题

    金山2010年9月份校园招聘WPS服务端开发的笔试题,绝对真实!!

    多益网络2013 笔试题

    【多益网络2013 笔试题】是针对求职者准备的一份资源,包含了2012年和2013年多益网络(一家知名的网络游戏公司)的面试题目。这份资料对于想要进入IT行业,尤其是游戏开发或相关领域的应聘者来说,是一份非常宝贵的...

    金山笔试题金山笔试题:涉及C++...及一些算法设计技术.....

    "C++编程与算法设计技术" 本资源涉及C++编程语言和算法设计技术,涵盖了多种数据结构、继承方式、算法设计和数据库查询等知识点。 1. const char *p、三种的区别: const char *p、char const *p和char * const p...

    海康+金山+三一重工2009笔试题

    海康威视、金山软件和三一重工是三家在各自领域具有重要影响力的公司,它们的笔试题往往能反映出企业对技术人才的要求和行业的发展趋势。2009年的笔试题,尽管距今已有一定时间,但依然能为当前的求职者提供宝贵的...

    金山kingsoft笔试题2010 c++

    【标题】:"金山kingsoft笔试题2010 c++" 【描述】:"C++ 工程师 金山software 2010年校园招聘笔试题 技术类" 【标签】:"c++ 金山 笔试题" 【知识点详解】 1. **C++类型转换的区别** C++中主要有四种类型转换:...

    金山打字通2013.exe

    金山打字通2013.exe 打字练习工具

    金山2008校园招聘笔试题

    【金山2008校园招聘笔试题】涉及的知识点涵盖了C++编程语言、STL容器、数据结构、算法、数据库操作、面向对象编程以及逻辑思维能力。以下是对这些知识点的详细解析: 1. **指针与const的用法**: - `const char *p...

Global site tag (gtag.js) - Google Analytics