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