题目:根据用户输入的行数n打印空心三角形,下图分别为n=3、n=4、n=5和n=10的效果图




首先打印的图形的行数需要用户进行输入,故,首先设计有一个数据活动传输数据给自定义活动。

自定义活动用于打印空心三角形
根据观察到的现象,发现,每个图形的第一行打印1颗星;第二行打印2颗星,最后一行打印的星号数和输入的行数相等。
其余的行数,打印的星号数均为2,分别在所在行的第一个位置和最后一个位置,其他的位置打印空格。
如果将行数i从0开始计数,则第一行是i==0时,表示第一行,此时需要打印1颗星;第二行是i==1,此时需要打印2颗星;所以,打印的星号数刚好可以通过行数i+1计算所得。当i==外部输入的行数时,此时打印的星号数等于行数,由于行数从0开始计数,而外部传入的行数是从1开始计数的,所以i==外部行数-1时,表示是最后一行了,需要打印外部行数这么多颗星。

由于要打印1颗星、打印2颗星甚至是n颗星,所以,创建一个自定义活动,用于打印n颗星(之前的讲解中曾多次提到,具体思考不再讲解)

刚刚已经考虑了第一行,第二行、第n行。还有3~n-1行的每一行打印,这些行有一个特点:每行均有两颗星,分别在该行的第一个位置和最后一个位置,其余位置均为空格。所以,需要单独写一个自定义活动来进行处理。

用变量j来标记某一行的位置,则j==0和j==n时,分别表示该行的第一个位置和最后一个位置,该位置上需要打印的是星号。其余位置,需要打印的是空格。
所以,需要将每行的每一个位置上应该打印的进行拼接,直到循环结束,把一行的所有需要打印的数据拼接完成后,形成:星号+空格(可能有多个)+星号的形式,再进行打印。
输入10测试

输入20测试:
