解题思路:定义二维数组找规律赋值
注意事项:
参考代码:
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 人评分
printf基础练习2 (C语言代码)浏览:648 |
Hello, world! (C语言代码)浏览:1315 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)浏览:553 |
【回文数(二)】 (C语言代码)浏览:800 |
多输入输出练习1 (C语言代码)浏览:1219 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:751 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:672 |
C语言程序设计教程(第三版)课后习题6.3 (C语言代码)from DQM浏览:773 |
1642题解浏览:784 |
2004年秋浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:676 |