java实现 历届试题 蓝桥杯 打印十字图.docx
-
资源ID:143870919
资源大小:253.94KB
全文页数:5页
- 资源格式: DOCX
下载积分:5金贝
快捷下载
账号登录下载
微信登录下载
微信扫一扫登录
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
|
下载须知 | 常见问题汇总
|
java实现 历届试题 蓝桥杯 打印十字图.docx
java实现 历届试题 蓝桥杯 打印十字图历届试题 打印十字图题目描述小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示(可参见p1.jpg)对方同时也需要在电脑dos窗口中以字符的形式输出该标志,并能任意控制层数。为了能准确比对空白的数量,程序要求对行中的空白以句点(.)代替。输入格式:一个正整数 n (n<30) 表示要求打印图形的层数输出:对应包围层数的该标志。例如:用户输入:1程序应该输出:再例如:用户输入:3程序应该输出:请仔细观察样例,尤其要注意句点的数量和输出位置。资源约定:峰值内存消耗(含虚拟机) < 64MCPU消耗 < 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 charlenlen; for(int i = 0;i < len;i+) for(int j = 0;j < len;j+) resultij = .; /中间的3*3的直线 for(int i = mid - 2;i <= mid + 2;i+) resultmidi = $; resultimid = $; /这里是从中心向外进行更改 for(int i = 1;i <= n;i+) /各个方向的连线,上下左右四个方向的连线 for(int j = mid - 2 * i;j <= mid + 2 * i;j+) resultmid - 2 * (i + 1)j = $; resultmid + 2 * (i + 1)j = $; resultjmid - 2 * (i + 1) = $; resultjmid + 2 * (i + 1) = $; / for(int i1 = 0;i1 < len;i1+) / for(int j = 0;j < len;j+) / System.out.print(resulti1j);/ / System.out.println();/ /这里的三个点就是四个角方向的直角的三个点 /左上角 resultmid - 2 * imid - 2 * i = $; resultmid - 2 * imid - 2 * i - 1 = $; resultmid - 2 * i - 1mid - 2 * i = $; /右上角 resultmid - 2 * imid + 2 * i = $; resultmid - 2 * i - 1mid + 2 * i = $; resultmid - 2 * imid + 2 * i + 1 = $; /左下角 resultmid + 2 * imid - 2 * i = $; resultmid + 2 * imid - 2 * i - 1 = $; resultmid + 2 * i + 1mid - 2 * i = $; /右下角 resultmid + 2 * imid + 2 * i = $; resultmid + 2 * imid + 2 * i + 1 = $; resultmid + 2 * i + 1mid + 2 * i = $; for(int i = 0;i < len;i+) for(int j = 0;j < len;j+) System.out.print(resultij); System.out.println(); public static void main(String args) Scanner in = new Scanner(System.in); int n = in.nextInt(); getResult(n);