蓝桥杯历届试题 打印十字图——java

历届试题 打印十字图

第一次写博客,看了各位大佬的代码之后写的。

1. 题目简介

小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:在这里插入图片描述
将图案截图后不断变形得到上图
对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
输入格式
一个正整数 n (n<30) 表示要求打印图形的层数。
输出格式
对应包围层数的该标志。

2.题目分析

在这里插入图片描述

1.定义二维数组储存图案;//长度为4*n+5
2. 图片为中心对称图案,我选择先赋值左上角四分之一图案
3.左上角图案又可分为A、B、C三部分赋值;
4. 分别赋值A、B、C红色部分为’$’;
5. 左上角赋值完成后赋值右上角和下半部分;
6. 输出二维数组;

3.代码


~~//水平比较菜,代码也比较菜~~ 

import java.util.*;
public class Main{
	public static void main(String[] args){
		Scanner in=new Scanner(System.in);
		int n=in.nextInt();
		int L=4*n+5;
		int mid=L/2;
		char arr[][]=new char[L+1][L+1];
		for(int i=1;i<=L;i++){
			for(int j=1;j<=L;j++){
				arr[i][j]='.';//全部初始化为'.'
			}
		}
		
		for(int i=1;i<=mid+1;i++){
			for(int j=1;j<=mid+1;j++){
				if((i>=3)&&(j<i-1)&&(j%2!=0)){
					arr[i][j]='$';//赋值A部分
				}
				else if((i==j)&&(i>=3)&&(i%2!=0)){
					arr[i][j]=arr[i-1][j]=arr[i][j-1]='$';//赋值B部分
				}
				else if((j>=3)&&(i<j-1)&&(i%2!=0)){
					arr[i][j]='$';//赋值C部分
				}
			}
		}
		
		//赋值右上角
		for(int i=1;i<=mid+1;i++){
			for(int j=mid+2;j<=L;j++){
				arr[i][j]=arr[i][L+1-j];
			}
		}
		
		//赋值下半部分
		for(int i=mid+2;i<=L;i++){
			for(int j=1;j<=L;j++){
				arr[i][j]=arr[L+1-i][j];
			}
		}
				
		for(int i=1;i<=L;i++){
			for(int j=1;j<=L;j++){
				System.out.print(arr[i][j]);
			}
			System.out.println();
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值