解题思路:定义二维数组找规律赋值
注意事项:
参考代码:
import java.util.Scanner;
public class Main {
public static void main(String []args){
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
scanner.close();
int m=5+n*4; //定义数组
char [][]a=new char[m+1][m+1];
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
a[i][j]='.';
}
}
a[(m+1)/2][(m+1)/2]='$'; //最初的十字赋值
a[(m+1)/2-1][(m+1)/2]='$';
a[(m+1)/2-2][(m+1)/2]='$';
a[(m+1)/2+1][(m+1)/2]='$';
a[(m+1)/2+2][(m+1)/2]='$';
a[(m+1)/2][(m+1)/2+1]='$';
a[(m+1)/2][(m+1)/2+2]='$';
a[(m+1)/2][(m+1)/2-1]='$';
a[(m+1)/2][(m+1)/2-2]='$';
while (n>0){ //n圈包围
int l=(m+1)/2-2-2*n; //上下左右 依次赋值
int r=(m+1)/2+2+2*n;
int u=(m+1)/2-2-2*n;
int d=(m+1)/2+2+2*n;
for(int i=(m+1)/2-2*n;i<=(m+1)/2+2*n;i++) {
a[i][l] = '$';
a[i][r] = '$';
a[u][i] = '$';
a[d][i] = '$';
}
a[u+2][l+1]=a[u+1][l+2]=a[u+1][r-2]=a[u+2][r-1]= //两条边连接角赋值
a[d-2][l+1]=a[d-1][l+2]=a[d-1][r-2]=a[d-2][r-1]=
a[u+2][l+2]=a[u+2][r-2]=a[d-2][l+2]=a[d-2][r-2]='$';
n--;
}
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++){
System.out.print(a[i][j]);
}
System.out.println();
}
}
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复