C++程序打印空心直角三角形星号图案
以不同的格式(例如金字塔、正方形和菱形)显示星号图案在基础编程和逻辑构建中非常常见。在学习编程中的循环语句时,我们已经看到了几个星号和数字图案问题。在本文中,我们将了解如何在C++中打印空心直角三角形星号图案。
在这个程序中,我们取行数n,这将创建n行星号图案。让我们看一个相同的例子。
空心直角星号图案
* * * * * * * * * * * * * * * * * *
在这个例子中,共有n行。每一行都有几个星号,开头有一些空格。除第一行和最后一行外,每一行只有两个星号,中间有一些空格。第一行只包含一个星号,最后一行包含n个星号。
对于每一行,都有n – i个空格,之后打印星号。对于完整的右对齐三角形,我们连续打印星号。但这里我们只在第一列和最后一列打印星号,否则打印空格以使其为空心。最后一行打印所有星号以构成边界。
算法
- 读取n作为输入
- 对于i从1到n,执行
- 对于j从1到n - i,执行
- 输出空格
- 结束循环
- 对于k从1到i,执行
- 如果i不等于n,则
- 如果k = 1或k = i,则
- 显示'*'
- 否则
- 显示空格
- 结束判断
- 如果k = 1或k = i,则
- 否则
- 显示'*'
- 结束判断
- 如果i不等于n,则
- 结束循环
- 将光标移到下一行
- 对于j从1到n - i,执行
- 结束循环
由于在线编译器的一些限制,我们在开头添加了点而不是空格。否则,它有时会截断该行,输出结果将不正确。
示例
#include <iostream> using namespace std; void solve( int n ){ for ( int i = 1; i <= n; i++ ) { for ( int j = 1; j <= n - i; j++ ) { cout << "."; } for ( int k = 1; k <= i; k++ ) { if ( i != n ) { if ( k == 1 || k == i ) { cout << "*"; } else { cout << " "; } } else { cout << "*"; } } cout << "\n"; } } int main(){ int n = 7; cout << "Hollow Star Pattern for " << n << " lines." << endl; solve( n ); }
输出
Hollow Star Pattern for 7 lines. ......* .....** ....* * ...* * ..* * .* * *******
输出 (n = 18)
Hollow Star Pattern for 18 lines. .................* ................** ...............* * ..............* * .............* * ............* * ...........* * ..........* * .........* * ........* * .......* * ......* * .....* * ....* * ...* * ..* * .* * ******************
结论
星号图案易于实现,有助于学习编程中的循环概念。在一些文章中,我们已经看到打印金字塔、方框和菱形等星号图案的技术。在本文中,我们了解了如何在C++中显示空心金字塔。它获取行数n,然后显示右对齐的空心三角形星号图案。每一行在一些空格之后都有几个星号。空格用于对齐(由于在线编译器的限制,我们使用点而不是空格进行对齐)。对于最后一行,它打印所有星号,但对于其他行,它只在第一列和最后一列的位置打印星号。因此形成了空心三角形。
广告