小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:
..$$$$$$$$$$$$$.. ..$...........$.. $$$.$$$$$$$$$.$$$ $...$.......$...$ $.$$$.$$$$$.$$$.$ $.$...$...$...$.$ $.$.$$$.$.$$$.$.$ $.$.$...$...$.$.$ $.$.$.$$$$$.$.$.$ $.$.$...$...$.$.$ $.$.$$$.$.$$$.$.$ $.$...$...$...$.$ $.$$$.$$$$$.$$$.$ $...$.......$...$ $$$.$$$$$$$$$.$$$ ..$...........$.. ..$$$$$$$$$$$$$..对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
输入格式 一个正整数 n (n<30) 表示要求打印图形的层数。 输出格式 对应包围层数的该标志。 样例输入1 1 样例输出1 ..$$$$$.. ..$...$.. $$$.$.$$$ $...$...$ $.$$$$$.$ $...$...$ $$$.$.$$$ ..$...$.. ..$$$$$.. 样例输入2 3 样例输出2 ..$$$$$$$$$$$$$.. ..$...........$.. $$$.$$$$$$$$$.$$$ $...$.......$...$ $.$$$.$$$$$.$$$.$ $.$...$...$...$.$ $.$.$$$.$.$$$.$.$ $.$.$...$...$.$.$ $.$.$.$$$$$.$.$.$ $.$.$...$...$.$.$ $.$.$$$.$.$$$.$.$ $.$...$...$...$.$ $.$$$.$$$$$.$$$.$ $...$.......$...$ $$$.$$$$$$$$$.$$$ ..$...........$.. ..$$$$$$$$$$$$$.. 提示请仔细观察样例,尤其要注意句点的数量和输出位置。
解析:
import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner in = new Scanner(System.in); int x = in.nextInt(); int n = 5+4*x; int m=n/2; int[][] num = new int[n][n]; int a=m-2; int b=m+2; for(int i=a;i<=b;i++){ num[m][i]=1; num[i][m]=1; } for(int t=1;t<=x;t++){ for(int i=a;i<=b;i++){ num[a-2][i]=1; num[b+2][i]=1; num[i][a-2]=1; num[i][b+2]=1; } for(int i=a-2;i<=a;i++){ num[i][a]=1; num[i][b]=1; num[a][i]=1; num[b][i]=1; } for(int i=b;i<=b+2;i++){ num[i][a]=1; num[i][b]=1; num[a][i]=1; num[b][i]=1; } a=a-2; b=b+2; } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(num[i][j]==0){ System.out.print("."); }else if(num[i][j]==1){ System.out.print("$"); } } System.out.println(); } } }