标题:打印十字图
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg)
对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
为了能准确比对空白的数量,程序要求对行中的空白以句点(.)代替。
输入格式:
一个正整数 n (n<30) 表示要求打印图形的层数
输出:
对应包围层数的该标志。
例如:
用户输入:
1
程序应该输出:
..$$$$$..
..$...$..
$$$.$.$$$
$...$...$
$.$$$$$.$
$...$...$
$$$.$.$$$
..$...$..
..$$$$$..
再例如:
用户输入:
3
程序应该输出:
..$$$$$$$$$$$$$..
..$...........$..
$$$.$$$$$$$$$.$$$
$...$.......$...$
$.$$$.$$$$$.$$$.$
$.$...$...$...$.$
$.$.$$$.$.$$$.$.$
$.$.$...$...$.$.$
$.$.$.$$$$$.$.$.$
$.$.$...$...$.$.$
$.$.$$$.$.$$$.$.$
$.$...$...$...$.$
$.$$$.$$$$$.$$$.$
$...$.......$...$
$$$.$$$$$$$$$.$$$
..$...........$..
..$$$$$$$$$$$$$..
请仔细观察样例,尤其要注意句点的数量和输出位置。
资源约定:
峰值内存消耗(含虚拟机) < 64M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.6及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
解答:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan=new Scanner(System.in); find(scan.nextInt()); } public static void find(int n) { // 确定数组的大小 int len = 5 + n * 4; String[][] arr = new String[5 + n * 4][5 + n * 4]; int zx = len / 2; // 初始化 for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { arr[i][j] = "."; } } // 填充中心的十字 for (int i = zx - 2; i <= zx + 2; i++) { arr[i][zx] = "$"; arr[zx][i] = "$"; } // 填充外层的圈 for (int m = 0; m < n; m++) { for (int i = zx - (2+m*2); i <= zx + 2+2*m; i++) { arr[zx - (4+m*2)][i] = "$"; arr[zx + 4+m*2][i] = "$"; arr[i][zx - (4+m*2)] = "$"; arr[i][zx + 4+m*2] = "$"; } for (int i = zx - (3+m*2); i <= zx + 3+m*2; i++) { arr[zx - (2+m*2)][i] = "$"; arr[zx + 2+m*2][i] = "$"; arr[i][zx + 2+m*2] = "$"; arr[i][zx - (2+m*2)]= "$"; } arr[zx - (2+m*2)][zx - (1+m*2)] = "."; arr[zx - (2+m*2)][zx + 1+m*2] = "."; arr[zx + 2+m*2][zx - (1+m*2)] = "."; arr[zx + 2+m*2][zx + 1+m*2] = "."; arr[zx - (1+m*2)][zx - (2+m*2)] = "."; arr[zx + 1+m*2][zx - (2+m*2)] = "."; arr[zx - (1+m*2)][zx + 2+m*2] = "."; arr[zx + 1+m*2][zx + 2+m*2] = "."; } // 打印 for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j]); } System.out.println(); } } }
版权声明:本文为博主原创文章,未经博主允许不得转载。