您的位置:首页 > 编程语言 > Java开发

2015第六届蓝桥杯 09 打印大X(java)

2018-02-27 22:51 274 查看
打印大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,否则按无效代码处理。

注意一下:其实打印上半段和打印下半段的代码差不多,区别在于i,i表示每一行前面'.'或后面的'.'数目!!

代码如下:import java.util.Scanner;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt(); //宽度
int n = scanner.nextInt(); //高度
/* 保证n是奇数 */
if(n%2==0){
return;
}

/*其实打印图形上半段和打印图形下半段的代码差不多,写完上半段的代码后,直接复制即可
区别在于i,i表示每一行前面'.'数目或者后面的'.'数目!!! */

//打印上半段(包含了中间那一行)
int column = n+(m-1);//每一行列数
for(int i=0;i<n/2+1;i++){ //行数(包含了中间一行)
for(int j=0;j<i;j++){ //打印前面的'.'
System.out.print('.');
}
int temp=column-2*i; //temp代表中间有几个'.'
if(temp>=2*m){ //判断中间是否还有'.'
for(int k=0;k<m;k++){
System.out.print('*');
}
for(int l=column-(2*m)-(2*i);l>0;l--){
System.out.print('.');
}
for(int p=0;p<m;p++){
System.out.print('*');
}
}else{
for(int k=0;k<column-2*i;k++){
System.out.print('*');
}
}
for(int q=0;q<i;q++){
System.out.print('.');
}
System.out.println(); //换行
}

//打印下半段
for(int i=n/2-1;i>=0;i--){ //行数(包含了中间一行)
for(int j=0;j<i;j++){ //打印前面的'.'
System.out.print('.');
}
int temp=column-2*i; //temp代表中间有几个'.'
if(temp>=2*m){ //判断中间是否还有'.'
for(int k=0;k<m;k++){
System.out.print('*');
}
for(int l=column-(2*m)-(2*i);l>0;l--){
System.out.print('.');
}
for(int p=0;p<m;p++){
System.out.print('*');
}
}else{
for(int k=0;k<column-2*i;k++){
System.out.print('*');
}
}
for(int q=0;q<i;q++){
System.out.print('.');
}
System.out.println(); //换行
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: