蓝桥杯(java)个人赛真题:打印大X

39 篇文章 6 订阅
23 篇文章 0 订阅

打印大X

			如下的程序目的是在控制台打印输出大X。
			可以控制两个参数:图形的高度,以及笔宽。
			
			用程序中的测试数据输出效果:
			(如果显示有问题,可以参看p1.png)
			
			高度=15, 笔宽=3
			***           ***
			 ***         ***
			  ***       ***
			   ***     ***
			    ***   ***
			     *** ***
			      *****
			       ***
			      *****
			     *** ***
			    ***   ***
			   ***     ***
			  ***       ***
			 ***         ***
			***           ***
			高度=8, 笔宽=5
			*****  *****
			 **********
			  ********
			   ******
			   ******
			  ********
			 **********
			*****  *****
			
			请仔细分析程序流程,填写缺失的代码。
			
			
			public class A
			{
				static void f(int h, int w){
					System.out.println(String.format("高度=%d, 笔宽=%d",h,w));
					int a1 = 0;
					int a2 = h - 1;
					
					for(int k=0; k<h; k++){
						int p = Math.min(a1,a2);
						int q = Math.max(a1+w,a2+w);
						
						for(int i=0; i<p; i++) System.out.print(" ");
						
						if(q-p<w*2){
							____________________________________________ ; //填空
						}
						else{
							for(int i=0; i<w; i++) System.out.print("*");
							for(int i=0; i<q-p-w*2; i++) System.out.print(" ");
							for(int i=0; i<w; i++) System.out.print("*");
						}
						System.out.println();
						a1++;
						a2--;
					}
				}
				
				public static void main(String[] args){
					f(15,3);
					f(8,5);
				}
			}
			
			注意:只填写缺失的代码,不要拷贝已经存在的代码。

思路:
这题的思路,有图形,且确实填空代码不报错的情况。快捷的办法就是先运行一遍,结果发现缺失的代码对应每个图形的类似部位,都在中间,这样就有思路了,这样在认真读题,结合残缺图形,很容易得到答案,
我之前有发过一题,也是打印大X,个人觉得我的算法至少在代码简洁度上比这个要好得多,其他的效率什么的就不太清除了,欢迎大家找我讨论;

package Lqb;

public class Text32 {
	public static void main(String[] args) {
		f(15,3);
		f(8,5);
	}
	static void f(int h, int w){
		System.out.println(String.format("高度=%d, 笔宽=%d",h,w));
		int a1 = 0;
		int a2 = h - 1;
		
		for(int k=0; k<h; k++){
			int p = Math.min(a1,a2);
			int q = Math.max(a1+w,a2+w);
			
			for(int i=0; i<p; i++) System.out.print(" ");
			
			if(q-p<w*2){
				for(int i=0; i<q-p; i++) System.out.print("*"); ; //填空
			}
			else{
				for(int i=0; i<w; i++) System.out.print("*");
				for(int i=0; i<q-p-w*2; i++) System.out.print(" ");
				for(int i=0; i<w; i++) System.out.print("*");
			}
			System.out.println();
			a1++;
			a2--;
		}
	}
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值