• Java实现第九届蓝桥杯打印大X


    打印大X
    题目描述
    如下的程序目的是在控制台打印输出大X。
    可以控制两个参数:图形的高度,以及笔宽。
    
    用程序中的测试数据输出效果:
    (如果显示有问题,可以参看p1.png)
    
    高度=15, 笔宽=3
    ***           ***
     ***         ***
      ***       ***
       ***     ***
        ***   ***
         *** ***
          *****
           ***
          *****
         *** ***
        ***   ***
       ***     ***
      ***       ***
     ***         ***
    ***           ***
    高度=8, 笔宽=5
    *****  *****
     **********
      ********
       ******
       ******
      ********
     **********
    *****  *****
    
    请仔细分析程序流程,填写缺失的代码。
    

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

    首先,看看没有这一行执行是什么样子

    在这里插入图片描述
    证明,填写的地方就是交叉的地方,并且是打印*的地方,只有一行

    q永远是大的,p永远是小的
    当向中间靠拢的时候他们的差是比较小的

    		  int a1 = 0;
              int a2 = h - 1;
              int p = Math.min(a1,a2);
              int q = Math.max(a1+w,a2+w);
    

    既然是代码填空题,想不明白的时候多试试,结果就出来了
    好记性不如烂笔头,尝试才能出结果,空想就真的空了
    下面附上整体代码

    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--;
    		}
    	}
    }
    
    
  • 相关阅读:
    Mysql安装
    Python的内存管理机制
    Ansible模块
    Redis持久化
    Linux——ansible(1)
    Flask
    Flask入门
    ajax处理回调函数,用ajax向后台发送数据
    数字类型钱币转换为大写
    ligerui多选动态下拉框
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947775.html
Copyright © 2020-2023  润新知