首页 > 学院 > 开发设计 > 正文

试题_(设计十字图)02

2019-11-08 02:29:13
字体:
来源:转载
供稿:网友

问题描述 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:

这里写图片描述 对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。

输入格式 一个正整数 n (n<30) 表示要求打印图形的层数。 输出格式 对应包围层数的该标志。 样例输入1 1 样例输出1 这里写图片描述 样例输入2 3 样例输出2 这里写图片描述 提示 请仔细观察样例,尤其要注意句点的数量和输出位置。 这里写图片描述

import java.util.*; class Main { public static void main(String[] arge) { Scanner cin = new Scanner(System.in); int num = cin.nextInt(); int leng = num*4+5; char[][] cross = new char[leng][leng]; init(cross); f(cross,num); sop(cross); } public static void init(char[][] arr) { for(int i = 0;i<arr.length;i++) Arrays.fill(arr[i],'.'); int mid = arr.length/2; arr[mid][mid] = '$'; arr[mid+1][mid] = '$'; arr[mid+2][mid] = '$'; arr[mid-1][mid] = '$'; arr[mid-2][mid] = '$'; arr[mid][mid+1] = '$'; arr[mid][mid+2] = '$'; arr[mid][mid-1] = '$'; arr[mid][mid-2] = '$'; } public static void sop(char[][] arr) { for(int i = 0;i<arr.length;i++) { for(int j = 0;j<arr.length;j++) System.out.PRint(arr[i][j]); sop1(""); } } public static void f(char[][] arr,int leng) { int x = arr.length/2 - 2; int y = arr.length/2 - 2; arr[x][y] = '$'; int count = 0; while(count<leng) { for(int i = 0;i<2;i++) { x--; arr[x][y] = '$'; } for(int i = 0;i<count*4+4;i++) { y++; arr[x][y] = '$'; } for(int i = 0;i<2;i++) { x++; arr[x][y] = '$'; } for(int i = 0;i<2;i++) { y++; arr[x][y] = '$'; } for(int i = 0;i<count*4+4;i++) { x++; arr[x][y] = '$'; } for(int i = 0;i<2;i++) { y--; arr[x][y] = '$'; } for(int i = 0;i<2;i++) { x++; arr[x][y] = '$'; } for(int i = 0;i<count*4+4;i++) { y--; arr[x][y] = '$'; } for(int i = 0;i<2;i++) { x--; arr[x][y] = '$'; } for(int i = 0;i<2;i++) { y--; arr[x][y] = '$'; } for(int i = 0;i<count*4+4;i++) { x--; arr[x][y] = '$'; } for(int i = 0;i<2;i++) { y++; arr[x][y] = '$'; } x -= 2; y -= 2; count++; } } public static void sop1(Object obj) { System.out.println(obj); } }
上一篇:1006烧水问题

下一篇:多线程机制

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表