java实现 历届试题 蓝桥杯 打印十字图
历届试题 打印十字图
题目描述
小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg)
对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。
为了能准确比对空白的数量,程序要求对行中的空白以句点(.)代替。
输入格式:
一个正整数 n (n<30) 表示要求打印图形的层数
输出:
对应包围层数的该标志。
例如:
用户输入:
1
程序应该输出:

再例如:
用户输入:
3
程序应该输出:

请仔细观察样例,尤其要注意句点的数量和输出位置。
资源约定:
峰值内存消耗(含虚拟机) < 64M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.6及以上版本的特性。

问题分析:
当我看到这个题目的时候,密密麻麻的完全看不出来哪里有个十字嘛。将上面的文字符号图像形象化一下,如下图:
这张图,中间是个十字,外面是一层一层的圈。我们再加几条线,就能更清晰一些了。如下图:
我们将图片左上角分成3个区域。好了,接下来说说我们的打印思路:
思路:
(我们只打印 ’ $ ',不打印 ’ . ’ )
第一步:将整个图片全部初始化为白色格子(我们只打印红色格子)。
第二步:打印中心十字(也可以只打印左上角部分的十字)。
第三步:打印A区域,从图片的中心点开始(注意规律:1,3,5,7个数)。
第四步:打印C区域,同样从中心开始打印(注意规律)
第五步:沿着对角线打印B区域。(OK现在基本上打印完毕了)
第六步:根据对称性,我们将图片(左右对折,上下对折,沿着对角线对折),OK图片打印完毕。
ps:这里有个需要注意的地方,就是打印的时候,不要加空格,你看它的图形是长方形的,如果你加上了空格就变成了正方形的了。
import java.util.Scanner;
public class 打印十字图 {
public static void getResult(int n) {
int len = 5 + 4 * n;
int mid = len / 2;
char[][] result = new char[len][len];
for(int i = 0;i < len;i++)
for(int j = 0;j < len;j++)
result[i][j] = '.';
//中间的3*3的直线
for(int i = mid - 2;i <= mid + 2;i++) {
result[mid][i] = '$';
result[i][mid] = '$';
}
//这里是从中心向外进行更改
for(int i = 1;i <= n;i++) {
//各个方向的连线,上下左右四个方向的连线
for(int j = mid - 2 * i;j <= mid + 2 * i;j++) {
result[mid - 2 * (i + 1)][j] = '$';
result[mid + 2 * (i + 1)][j] = '$';
result[j][mid - 2 * (i + 1)] = '$';
result[j][mid + 2 * (i + 1)] = '$';
}
// for(int i1 = 0;i1 < len;i1++) {
// for(int j = 0;j < len;j++) {
// System.out.print(result[i1][j]);
// }
// System.out.println();
// }
//这里的三个点就是四个角方向的直角的三个点
//左上角
result[mid - 2 * i][mid - 2 * i] = '$';
result[mid - 2 * i][mid - 2 * i - 1] = '$';
result[mid - 2 * i - 1][mid - 2 * i] = '$';
//右上角
result[mid - 2 * i][mid + 2 * i] = '$';
result[mid - 2 * i - 1][mid + 2 * i] = '$';
result[mid - 2 * i][mid + 2 * i + 1] = '$';
//左下角
result[mid + 2 * i][mid - 2 * i] = '$';
result[mid + 2 * i][mid - 2 * i - 1] = '$';
result[mid + 2 * i + 1][mid - 2 * i] = '$';
//右下角
result[mid + 2 * i][mid + 2 * i] = '$';
result[mid + 2 * i][mid + 2 * i + 1] = '$';
result[mid + 2 * i + 1][mid + 2 * i] = '$';
}
for(int i = 0;i < len;i++) {
for(int j = 0;j < len;j++) {
System.out.print(result[i][j]);
}
System.out.println();
}
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
getResult(n);
}
}
java实现 历届试题 蓝桥杯 打印十字图的更多相关文章
- 蓝桥杯-打印十字图-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- Java实现第九届蓝桥杯打印大X
打印大X 题目描述 如下的程序目的是在控制台打印输出大X. 可以控制两个参数:图形的高度,以及笔宽. 用程序中的测试数据输出效果: (如果显示有问题,可以参看p1.png) 高度=15, 笔宽=3 * ...
- 蓝桥杯 历届试题 PREV-2 打印十字图
历届试题 打印十字图 时间限制:1.0s 内存限制:256.0MB 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示: 对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并 ...
- Java实现第九届蓝桥杯全球变暖
全球变暖 题目描述 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... .##.... .##.... ....##. ...
- 打印十字图 JAVA 递归实现
这个是我自己想的,头疼了一个下午,不过还好.做出来了.在网上找这道题但没有找到用递归的做法. /*递归思想实现 * 标题:打印十字图 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可 ...
- java实现第六届蓝桥杯打印大X
打印大X 打印大X 小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度. 为了便于比对空格,所有的空白位置都以句点符来代替. 要求输入两个整数m n,表示笔的宽度,X的高度.用 ...
- Java实现第九届蓝桥杯小朋友崇拜圈
小朋友崇拜圈 题目描述 班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己). 在一个游戏中,需要小朋友坐一个圈, 每个小朋友都有自己最崇拜的小朋友在他的右手边. 求满足条件的圈最大多少人 ...
- Java实现第十一届蓝桥杯JavaB组 省赛真题
试题 A: 指数计算 本题总分:5 分 [问题描述] 7 月 1 日是建党日,从 1921 年到 2020 年, 已经带领中国人民 走过了 99 年. 请计算:7 ^ 2020 mod 1921,其中 ...
- Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛
有错误的或者有问题的欢迎评论 十六进制数1949对应的十进制数 19000互质的数的个数 70044与113148的最大公约数 第十层的二叉树 洁净数 递增序列 最大的元素距离 元音字母辅音字母的数量 ...
随机推荐
- Qt5.5 connection firebird on Linux Centos7.2 or windows
windows c++ 项目移植到 linux,原项目需要连接 Firebird数据库. google 后知道 linux qt connection Firebird 有两种方法: 1.ibpp c ...
- HDU 3874 Necklace 区间查询的离线操作
题目: http://acm.hdu.edu.cn/showproblem.php?pid=3874 对需要查询的区间按右端点排序,然后从左到右依次加入序列中的元素,同时更新,更新的方法是,把上一次出 ...
- Apache Poi实现excel解析
一.说明 1.本文通过使用 poi 工具解析 excel 表格数据,实现导入导出 2.excel目前有两种格式 2003版本的 excel.xls 与 2007版本的 excel.xlsx ,注意两种 ...
- python100例 21-30
021 猴子吃桃 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早 ...
- VST的安装
对需要使用VST的用户,你可以到http://www.soft-gems.net/去免费下载没有使用限制.没有广告的VST.包括例子程序以及说明文档也可以下载到,下载完成后,就是安装,以前版本的VST ...
- Java 如何实现优雅停服?刨根问底
在 Java 的世界里遨游,如果能拥有一双善于发现的眼睛,有很多东西留心去看,外加耐心助力,仔细去品,往往会品出不一样的味道. 通过本次分享,能让你轻松 get 如下几点,绝对收获满满. a)如何让 ...
- 实现es6中的set和map
转载自: https://www.cnblogs.com/hui-fly/p/9459152.html https://blog.csdn.net/roamingcode/article/detail ...
- Spring BeanFactory 容器
Spring 的 BeanFactory 容器 这是一个最简单的容器,它主要的功能是为依赖注入 (DI) 提供支持,这个容器接口在 org.springframework.beans.factory. ...
- PAT-1063 Set Similarity (set集合)
1063. Set Similarity Given two sets of integers, the similarity of the sets is defined to be Nc/Nt*1 ...
- Pyqt5_QMessageBox
QMessageBox header:会话窗标题 info:会话窗内容 #弹出5种不同类型的消息框 reply1=QMessageBox.information(self,"title&qu ...