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< } }
发布评论