您的位置:首页 > 编程语言 > Java开发

蓝桥杯练习系统真题2——十字形

2017-03-31 14:21 225 查看
这里写代码片import java.util.Scanner;

public class Main {
public static void main(String args[]){
int n,center,line;
Scanner cin=new Scanner(System.in);
n=cin.nextInt();
line=n*4+5;
String a[][]=new String[line+1][line+1];
//打印中心十字
center=(n*4+5)/2+1;
a[center][center]="$";
for(int i=center-2;i<=center+2;i++)
{
a[i][center]="$";
a[center][i]="$";
}
//打印中间两条
for(int i=3;i<=center-1;i++)
{
if(i%2!=0)
{
a[center][center-i]=".";
a[center][center+i]=".";
a[center-i][center]=".";
a[center+i][center]=".";
}
else if(i%2==0)
{
a[center][center-i]="$";
a[center][center+i]="$";
a[center-i][center]="$";
a[center+i][center]="$";
}
}
//分别打印周围四块
//打印左上角正方形
for(int i=1;i<=2;i++)
{
for(int j=1;j<=2;j++)
{
a[i][j]=".";
}
}
for(int i=center-1;i>=3;i--)
{
if(i%2==0)
{
a[i][i]=".";
for(int k=1;k<3;k++)
{
a[i-k][i]=".";
a[i][i-k]=".";
}
for(int j=3;j<=i;j++)
{
if(j%2!=0)
{
a[i-j][i]="$";
a[i][i-j]="$";
}

4000
else if(j%2==0)
{
a[i-j][i]=".";
a[i][i-j]=".";
}
}
}
else if(i%2!=0)
{
a[i][i]="$";
for(int k=0;k<3;k++)
{
a[i-k][i]="$";
a[i][i-k]="$";
}
for(int j=3;j<=i;j++)
{
if(j%2!=0)
{
a[i-j][i]=".";
a[i][i-j]=".";
}
else if(j%2==0)
{
a[i-j][i]="$";
a[i][i-j]="$";
}
}
}
}
//打印右下角
for(int i=center+1;i<=line;i++)
{
for(int j=1;j<=center-1;j++)
{
a[i][j]=a[line+1-i][j];
}
}
//打印左上角
for(int i=1;i<=center-1;i++)
{
for(int j=center+1;j<=line;j++)
{
a[i][j]=a[i][line+1-j];
}
}
//打印左下角
for(int i=center+1;i<=line;i++)
{
for(int j=center+1;j<=line;j++)
{
a[i][j]=a[line+1-i][line+1-j];
}
}
for(int i=1;i<=line;i++)
{
for(int j=1;j<=line;j++)
{
System.out.print(a[i][j]);
}
System.out.println();
}
}

}


思路:先打印中间横着的一条,在打印中间竖着的一条。最后打印左上角,右上角左下角右下角和左上角对应着打印。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java