2024年4月22日发(作者:)

打印3个并列的星号三角形

题目描述

打印三个并列的星号三角形。

n=3的图形如下所示:

* * *

*** *** ***

***************

n=5的图形如下所示:

* * *

*** *** ***

***** ***** *****

******* ******* *******

***************************

输入

输入只有一行,包括1个整数N,N代表行数;

输出

输出N行的星号三角形

分析

1.把打印结果看成由3个并列的三角形组成

2.把每个三角形看成由1号、2号、3号等3个三角形组成;

3. 分析每个星号三角形的特点(这一种方法太过复杂,不易理解)

(1)第1个星号三角形的特点

行数i

1

2

3

4

5

1~n

每号三角形字符开始和结束的位置 k

1号空白三角形

1~4

1~3

1~2

1

1~n-i

2号星形三角形

5

4-6

3-7

2-8

1-9

n-i+1~n+i-1

3号空白三角形

6~9

7~9

8~9

9

n+i~2*n-1

1

2

3

(2)第2个星号三角形的特点

行数i

1

2

3

4

5

1~n

行数i

1

2

3

4

5

1~n

每号三角形字符开始和结束的位置 k

1号空白三角形

10~13

10~12

10~11

10

2*n~3*n-i-1

2号星形三角形

14

13-15

12-16

11-17

10-18

3*n-i~3*n+i-2

3号空白三角形

15~18

16~18

17~18

18

3*n+i-1~4*n-2

(3)第3个星号三角形的特点

每号三角形字符开始和结束的位置 k

1号空白三角形

19~22

19~21

19~20

19

4*n-1~5*n-i-1

2号星形三角形

23

22-24

21-25

20-26

19-27

5*n-i~5*n+i-3

3号空白三角形

24~27

25~27

26~27

27

5*n+i-2~6*n-3

以上分析太过复杂,不易寻找规律

4.最简单的方法,输出字符时,忽略字符位置,直接输出每种字符的个数

1

2

3

1号、2号、3号三角形看成是独立的三角

形,每次输出每种三角形每行字符的个数即可。

然后把这3个三角形重复输出3次,就可以

得到题目中3个并列的星号三角形。

每号三角形字符开始和结束的位置 k 行数i

1

2

3

4

5

1~n

4

3

2

1

1号空白三角形 2号星形三角形

1

3

5

7

9

1~2*i-1

3号空白三角形

4

3

2

1

1~n-i

1~n-i

代码

#include

using namespace std;

int main( ){

int n;

cin>>n;//输入行数

int i,j,k;//k代表每个三角形每行的字符数量

//循环行数

for(int i=1;i<=n;i++){

//循环打印3次,3个星号三角形(由三部分组成)

for(int j=1;j<=3;j++){

//空白三角形每一行的字符数,循环输出空格

for(int k = 1;k <= n-i;k++ ){

cout<<" ";

}

//星号三角形每一行的字符数,循环输出*

for(int k = 1;k <= 2*i-1;k++){

cout<<"*" ;

}

//空白三角形每一行的字符数,循环输出空格

for(int k = 1;k <= n-i;k++){

cout<<" ";

}

}

cout<

}

}