第六届蓝桥杯 软件类省赛真题 第九题:打印大X
来源:互联网 发布:sql字符串拼接 编辑:程序博客网 时间:2024/04/30 03:46
打印大X
小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。
为了便于比对空格,所有的空白位置都以句点符来代替。
要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数)
要求输出一个大X
例如,用户输入:
3 9
程序应该输出:
***.....***
.***...***.
..***.***..
...*****...
....***....
...*****...
..***.***..
.***...***.
***.....***
(如有对齐问题,参看【图1.jpg】)
再例如,用户输入:
4 21
程序应该输出
****................****
.****..............****.
..****............****..
...****..........****...
....****........****....
.....****......****.....
......****....****......
.......****..****.......
........********........
.........******.........
..........****..........
.........******.........
........********........
.......****..****.......
......****....****......
.....****......****.....
....****........****....
...****..........****...
..****............****..
.****..............****.
****................****
(如有对齐问题,参看【图2.jpg】)
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
===============================================================
打印演示:
2 5
**..**
.****.
..**..
.****.
**..**
1 5
*...*
.*.*.
..*..
.*.*.
*...*
1 7
*.....*
.*...*.
..*.*..
...*...
..*.*..
.*...*.
*.....*
2 7
**....**
.**..**.
..****..
...**...
..****..
.**..**.
**....**
======================================================
之前写的代码太不规范了。将对他们进行调整:
感觉这种方法过于繁琐,打算再做一次简化版的,对打印题进行规范化。
=====================================================
思路:
1.获取:m n,表示宽度高度
2.计算:算出图像宽度,新建二位数组
3.背景:填充所有的点
4.函数:(左右两个)星号函数,每次打印宽度个数
5.调用:每次调用从头打到尾
优化版代码实现:
小明希望用星号拼凑,打印出一个大X,他要求能够控制笔画的宽度和整个字的高度。
为了便于比对空格,所有的空白位置都以句点符来代替。
要求输入两个整数m n,表示笔的宽度,X的高度。用空格分开(0<m<n, 3<n<1000, 保证n是奇数)
要求输出一个大X
例如,用户输入:
3 9
程序应该输出:
***.....***
.***...***.
..***.***..
...*****...
....***....
...*****...
..***.***..
.***...***.
***.....***
(如有对齐问题,参看【图1.jpg】)
再例如,用户输入:
4 21
程序应该输出
****................****
.****..............****.
..****............****..
...****..........****...
....****........****....
.....****......****.....
......****....****......
.......****..****.......
........********........
.........******.........
..........****..........
.........******.........
........********........
.......****..****.......
......****....****......
.....****......****.....
....****........****....
...****..........****...
..****............****..
.****..............****.
****................****
(如有对齐问题,参看【图2.jpg】)
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main,否则按无效代码处理。
===============================================================
打印演示:
2 5
**..**
.****.
..**..
.****.
**..**
1 5
*...*
.*.*.
..*..
.*.*.
*...*
1 7
*.....*
.*...*.
..*.*..
...*...
..*.*..
.*...*.
*.....*
2 7
**....**
.**..**.
..****..
...**...
..****..
.**..**.
**....**
package tuxing;import java.util.Scanner;public class Xtu {public static void main(String[] args) {Scanner input = new Scanner(System.in); final int ZIKUAN=input.nextInt();final int GAO=input.nextInt();final int KUAN=GAO-1+ZIKUAN;//上部分int zjDian=KUAN-ZIKUAN*2,bDian=0;for(int i=1;i<=GAO;i++){Dian.daDian(bDian);Xinhao.daXin(ZIKUAN);Dian.daDian(zjDian);Xinhao.daXin(ZIKUAN);Dian.daDian(bDian);zjDian=zjDian-2;bDian++;System.out.println();if(zjDian<0){zjDian=zjDian+2;break;}}//END 中间部分for(int i=1;i<=KUAN;i++){int jxin=KUAN-bDian*2;Dian.daDian(bDian);Xinhao.daXin(jxin);Dian.daDian(bDian);System.out.println();if(jxin==ZIKUAN){break;}bDian++;}//END 中下部分for(int i=1;i<=KUAN;i++){bDian--;int jxin=KUAN-bDian*2;Dian.daDian(bDian);Xinhao.daXin(jxin);Dian.daDian(bDian);System.out.println();if(jxin>=ZIKUAN*2-1){break;} //尽量不要用等于,用限定范围好}//End 后部分for(int i=1;i<=GAO;i++){bDian--;Dian.daDian(bDian);Xinhao.daXin(ZIKUAN);zjDian=zjDian+2;Dian.daDian(zjDian);Xinhao.daXin(ZIKUAN);Dian.daDian(bDian);System.out.println();if(bDian==0){return;}}//End}}class Xinhao{static void daXin(int x){for(int i=1;i<=x;i++){System.out.print("*");}}}class Dian{static void daDian(int x){for(int i=1;i<=x;i++){System.out.print(".");}}}
======================================================
之前写的代码太不规范了。将对他们进行调整:
package com.aiqiongdiao;import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in); //获取用户输入的数值int ziKuan=input.nextInt(); //获取字的厚度int gao=input.nextInt(); //获取字的高度int kuan=gao-1+ziKuan;//计算字的宽度int zjDian=kuan-ziKuan*2; //计算中间的点数int bDian=0;for(int i=1;i<=gao;i++){daDian(bDian);daXin(ziKuan);daDian(zjDian);daXin(ziKuan);daDian(bDian);zjDian=zjDian-2;bDian++;System.out.println();if(zjDian<0){zjDian=zjDian+2;break;}}//END 中间部分for(int i=1;i<=kuan;i++){int jxin=kuan-bDian*2;daDian(bDian);daXin(jxin);daDian(bDian);System.out.println();if(jxin==ziKuan){break;}bDian++;}//END 中下部分for(int i=1;i<=kuan;i++){bDian--;int jxin=kuan-bDian*2;daDian(bDian);daXin(jxin);daDian(bDian);System.out.println();if(jxin>=ziKuan*2-1){break;} //尽量不要用等于,用限定范围好}//End 后部分for(int i=1;i<=gao;i++){bDian--;daDian(bDian);daXin(ziKuan);zjDian=zjDian+2;daDian(zjDian);daXin(ziKuan);daDian(bDian);System.out.println();if(bDian==0){return;}}}//Endpublic static void daXin(int ziKuan) {for(int i=1;i<=ziKuan;i++){System.out.print("*");}}private static void daDian(int bDian) {for(int i=1;i<=bDian;i++){System.out.print(".");}}}
感觉这种方法过于繁琐,打算再做一次简化版的,对打印题进行规范化。
=====================================================
思路:
1.获取:m n,表示宽度高度
2.计算:算出图像宽度,新建二位数组
3.背景:填充所有的点
4.函数:(左右两个)星号函数,每次打印宽度个数
5.调用:每次调用从头打到尾
优化版代码实现:
package com.aiqiongdiao;import java.util.Scanner;public class Main {/** * 图案改变 * @param arr */public static void gaiXin(String arr[][],int yqsd,int m){int x=0;int y=0;while(true){if(y>arr.length-1){break;}daXin(arr,m,x,y); //打印左斜daXin(arr,m,yqsd,y); //打印右斜y++; //头点改变x++;yqsd--; //注意是减减}return;}/** * 图像打印 * @param arr */public static void print(String arr[][]){for(int i=0;i<arr.length;i++){for(int j=0;j<arr[0].length;j++){System.out.print(arr[i][j]);}System.out.println();}}/** * 星号打印 * @param args */public static void daXin(String arr[][],int m,int x,int y){for(int i=0;i<m;i++){arr[y][x]="*";x++;}}public static void main(String[] args) {Scanner input=new Scanner(System.in);int m=input.nextInt(); //获取字宽度int n=input.nextInt(); //获取高度int kuan=n-1+m; //计算宽度String arr[][]=new String[n][kuan];for(int i=0;i<arr.length;i++){//填充背景for(int j=0;j<arr[0].length;j++){arr[i][j]=".";}}int yqsd=kuan-m; //注意开始的位数调整好gaiXin(arr,yqsd,m); //改图案图像print(arr); //打印图像}}
1 0
- 第六届蓝桥杯 软件类省赛真题 第九题:打印大X
- 【第六届蓝桥杯】打印大X
- 第六届蓝桥杯省赛Java语言C组_打印大X
- 第六届蓝桥杯 软件类省赛真题 第六题:奇妙的数字
- 打印大X
- 打印大X 蓝桥杯
- 打印大X
- 打印大X
- 蓝桥杯 打印大X
- 打印大X
- 第四届蓝桥杯 软件类省赛真题 第九题:买不到的数目
- 第六届蓝桥杯JavaA组 第九题 垒骰子
- 第六届蓝桥杯C/C++A组 第九题 垒骰子
- 蓝桥杯历届-打印大X
- 打印大X 2015年蓝桥杯省赛
- 第六届蓝桥杯 软件类省赛真题 第二题:立方尾不变
- 第五届蓝桥杯 软件类省赛真题 第六题:李白打酒
- 第六届蓝桥杯 软件类省赛真题 第七题:加法变乘法
- rtp over tcp
- HDU 1878:欧拉回路【并查集】
- 64位和32位编译环境下不同数据类型长度的区别
- iOS 8推送注册方式改变的问题
- x264代码剖析(十一):核心算法之宏块分析函数x264_macroblock_analyse()
- 第六届蓝桥杯 软件类省赛真题 第九题:打印大X
- oracle数据文件优化常用sql
- redis Strings类型和hash类型常用命令(笔记)
- 聪明的学生(bzoj 2523)
- Eclipse调错——Type The type javax.servlet.http.HttpServletRequest cannot be res...
- 线段树求解区间第k大
- How to Advertise Android as a Bluetooth LE Peripheral
- 共用体练习
- HDU3572 Task Schedule(最大流)