您的位置:首页 > 编程语言 > Java开发

第四届蓝桥杯预赛:打印十字图

2013-05-23 01:14 183 查看
标题:打印十字图

    小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见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();
}

}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息