任务描述
本关任务:编写一个程序,输入一个整数,输出对应的九枚硬币状态。
相关知识
游戏规则
一个 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 *********/ // 生成3x3矩阵 int[][] matrix = new int[3][3]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { matrix[i][j] = (state >> (8 - (i * 3 + j))) & 1; } } // 输出矩阵 for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { System.out.print((matrix[i][j] == 0 ? "反" : "正") + " "); } System.out.println(); } /********* End *********/ } }