C++程序打印向上三角星形图案
学习编程时,显示星形图案可以更容易地理解循环的概念。星形图案是各种使用星号(*)创建实心或空心三角形或菱形图案的设计。本文将演示一个居中对齐的向上三角形的C++实现。
下表将包含我们创建的打印星号的逻辑。下表可以帮助我们理解。
* * * * * * * * * * * * * * * * * * * * * * * * * * * *
这里显示了7行。对于每一行i,都有i个星号。但是,每一行都有一些填充。星号也有固定的填充。我们可以通过打印‘* ’(星号后跟一个空格)而不是只打印‘*’来实现这一点。该表显示了空格和星号的数量及其与i值的关系。
行号 (i) | 星号数量 (j) | 空格数量 (k) |
---|---|---|
1 | 1 | 6 |
2 | 2 | 5 |
3 | 3 | 4 |
4 | 4 | 3 |
5 | 5 | 2 |
6 | 6 | 1 |
7 | 7 | 0 |
这里的星号数量遵循行号'i'。每一行都有(n – i)个空格。让我们看看算法来理解这个概念。
算法
- 读取行数作为输入n
- 对于i从1到n,执行
- 对于k从1到(n - i),执行
- 显示空格 (' ')
- 结束循环
- 对于j从1到i,执行
- 显示星号后跟一个空格 '* '
- 结束循环
- 光标移到下一行
- 对于k从1到(n - i),执行
- 结束循环
由于我们的在线编译器有时会截断行并删除每行前后的空格,因此我们正在通过在每行前放置点(.)来进行测试。
示例
#include <iostream> using namespace std; void solve( int n ){ int i, j, k; for( i = 1; i <= n; i++ ) { for( k = 1; k <= (n - i); k++ ) { cout << "."; } for( j = 1; j <= i; j++ ) { cout << "* "; } cout << endl; } } int main(){ int n = 10; cout << "Upward Star Pattern using " << n << " number of lines:" << endl; solve( n ); }
输出
Upward Star Pattern using 10 number of lines: .........* ........* * .......* * * ......* * * * .....* * * * * ....* * * * * * ...* * * * * * * ..* * * * * * * * .* * * * * * * * * * * * * * * * * * *
输出 (对于 n = 15)
Upward Star Pattern using 15 number of lines: ..............* .............* * ............* * * ...........* * * * ..........* * * * * .........* * * * * * ........* * * * * * * .......* * * * * * * * ......* * * * * * * * * .....* * * * * * * * * * ....* * * * * * * * * * * ...* * * * * * * * * * * * ..* * * * * * * * * * * * * .* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
结论
嵌套循环在所有编程语言中都使用星形图案来解释。在本文中,我们讨论了如何打印居中对齐的向上三角形图案。为了使对齐更容易,星号前有空格(由于在线编译器的一些限制,我们打印点而不是空格)。您可以通过在句子中间插入空格来在本地测试它们。这也表明可以使用表格方法来识别第i行的星号和空格。我们可以很容易地修改公式,使用这个想法来演示其他的图案。
广告