【蓝桥杯】第六届-5-打印菱形

2016-03-12  本文已影响334人  JacobKong_Dev

题目

给出菱形的边长,在控制台上打印出一个菱形来。
为了便于比对空格,我们把空格用句点代替。
当边长为8时,菱形为:

.......* 
......*.* 
.....*...* 
....*.....* 
...*.......* 
..*.........* 
.*...........* 
*.............*
.*...........*
..*.........*
...*.......*
....*.....*
.....*...*
......*.*
.......*

下面的程序实现了这个功能,但想法有点奇怪。
请仔细分析代码,并填写划线部分缺失的代码。

public class A
{
    public static void f(int n)
    {
        String s = "*";
        for(int i=0; i<2*n-3; i++) s += ".";
        s += "*";
    
        String s1 = s + "\n";
        String s2 = "";
        
        for(int i=0; i<n-1; i++){
            //System.out.println("=>"+s);
            s = "." + _____________________________________ + "*";  //填空
            s1 = s + "\n" + s1;
            s2 += s + "\n";
        }
        System.out.println(s1+s2);      
    }
    
    public static void main(String[] args)
    {
        f(8);
    }
}

注意,只能填写缺少的部分,不要重复抄写已有代码。不要填写任何多余的文字。

答案

通过观察每行之间规律可得:
s.substring(0, 2*n-4-i)

代码

public class Five {
    public static void f(int n)
    {
        String s = "*";
        for(int i=0; i<2*n-3; i++) s += ".";
        s += "*";
    
        String s1 = s + "\n";
        String s2 = "";
        
        for(int i=0; i<n-1; i++){
//          System.out.println("=>"+s);
            s = "." + s.substring(0, 2*n-4-i) + "*";  //填空
            s1 = s + "\n" + s1;
            s2 += s + "\n";
        }
        System.out.println(s1+s2);      
    }
    
    public static void main(String[] args)
    {
        f(8);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读