更多JAVA版答案移步我的博客:蓝桥杯JAVA版答案汇总
本题考查
找规律
思路
先输出中心十字,再按照从外到内的顺序分别输出外部边框
第一步输出中心十字
.................
.................
.................
.................
.................
.................
........$........
........$........
......$$$$$......
........$........
........$........
.................
.................
.................
.................
.................
.................
第二步输出边框的上下左右边缘
..$$$$$$$$$$$$$..
.................
$...............$
$...............$
$...............$
$...............$
$.......$.......$
$.......$.......$
$.....$$$$$.....$
$.......$.......$
$.......$.......$
$...............$
$...............$
$...............$
$...............$
.................
..$$$$$$$$$$$$$..
第三步输出边框第二行倒数第二行第二列倒数第二列
..$$$$$$$$$$$$$..
..$...........$..
$$.............$$
$...............$
$...............$
$...............$
$.......$.......$
$.......$.......$
$.....$$$$$.....$
$.......$.......$
$.......$.......$
$...............$
$...............$
$...............$
$$.............$$
..$...........$..
..$$$$$$$$$$$$$..
第四步输出外部边框的内四角
..$$$$$$$$$$$$$..
..$...........$..
$$$...........$$$
$...............$
$...............$
$...............$
$.......$.......$
$.......$.......$
$.....$$$$$.....$
$.......$.......$
$.......$.......$
$...............$
$...............$
$...............$
$$$...........$$$
..$...........$..
..$$$$$$$$$$$$$..
另外的外部边框按照第二步到第四步重复进行。
参考:柳神博客
AC代码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scaner = new Scanner(System.in);
int n = scaner.nextInt();
scaner.close();
int row = 9+4*(n-1);
char a[][] = new char[150][150];
for(int i = 1; i <= row; i++)
for (int j = 1; j <= row; j++) a[i][j] = '.';
int mid = row/2 + 1;
//中间十字架
for (int i = mid - 2; i <= mid + 2; i++) a[i][mid] = a[mid][i] = '$';
//边框十字架
int tn = n;
while (tn != 0) {
// 第一行和最后一行,第一列和最后一列
for (int i = mid - 2 * tn; i <= mid + 2 * tn; i++)
a[mid - 2 * (tn + 1)][i] = a[mid + 2 * (tn + 1)][i] = a[i][mid - 2 * (tn + 1)] = a[i][mid + 2 * (tn + 1)] = '$';
//第二行和倒数第二行,第二列和倒数第二列
a[mid - 2 * tn - 1][mid - 2 * tn] = '$';
a[mid - 2 * tn - 1][mid + 2 * tn] = '$';
a[mid - 2 * tn][mid - 2 * tn - 1] = '$';
a[mid + 2 * tn][mid - 2 * tn - 1] = '$';
a[mid + 2 * tn + 1][mid - 2 * tn] = '$';
a[mid + 2 * tn + 1][mid + 2 * tn] = '$';
a[mid - 2 * tn][mid + 2 * tn + 1] = '$';
a[mid + 2 * tn][mid + 2 * tn + 1] = '$';
//四个拐弯的角
a[mid - 2 * tn][mid - 2 * tn] = '$';
a[mid - 2 * tn][mid + 2 * tn] = '$';
a[mid + 2 * tn][mid - 2 * tn] = '$';
a[mid + 2 * tn][mid + 2 * tn] = '$';
//下一层
tn--;
}
for (int i = 1; i <= row; i++) {
for (int j = 1; j <= row; j++) System.out.print(a[i][j]);
System.out.println();
}
}
}