任务描述
本关任务:编写一个程序,输入一个整数,输出对应的九枚硬币状态。
相关知识
游戏规则
一个 3 x 3 的矩阵中放置了 9 个硬币,这些硬币有些面向上,有些面向
下。可以使用 3 x 3 的矩阵中的 0 (正面)或 1 (反面)表示硬币的状态。下面是一些例子:
0 0 0
0 1 0
0 0 0
可以用 01 串表示为: 000 010 000
(转换为 10 进制数 16),同样的:
1 0 0
0 1 0
0 0 1
可以用 01 串表示为: 100 010 001
(转换为 10 进制数 145)。
因此,九枚硬币组成的矩阵的状态数有 2^9=512
种,数字 0 到 511 分别对应着一种状态。
编程要求
根据提示,在右侧编辑器补充代码,输入一个 0 到 511 之间的数字,输出对应的硬币状态。
测试说明
平台会对你编写的代码进行测试:
测试输入:0
; 预期输出:
反 反 反
反 反 反
反 反 反
测试输入:16
; 预期输出:
反 反 反
反 正 反
反 反 反
完成代码:
import java.util.Scanner;
public class Coin {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int state = input.nextInt();
input.close();
//请在指定位置填写代码。
/********* Begin *********/
char[][] coin = new char[3][3];
char[] num = new char[9];
for (int i = 8; i >= 0; i--) {
if (state % 2 == 1) {
num[i] = '1';
} else num[i] = '0';
state /= 2;
}
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
if (num[(col + row * 3)] == '0') {
coin[row][col] = '反';
} else if (num[(col + row * 3)] == '1') {
coin[row][col] = '正';
}
}
}
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 3; col++) {
System.out.print(coin[row][col] + " ");
}
System.out.println();
}
/********* End *********/
}
}
注:题目转自头歌平台,答案代码自写,仅做参考与和记录。