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

本文介绍了一个使用Java编写的程序,该程序能够绘制出一个复杂的图案,包括中心十字、周围四块区域的不同填充,并通过条件判断实现图案细节的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写代码片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]="$";
                    }
                    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();
        }
    }

}

思路:先打印中间横着的一条,在打印中间竖着的一条。最后打印左上角,右上角左下角右下角和左上角对应着打印。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值