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,执行
      • 显示星号后跟一个空格 '* '
    • 结束循环
    • 光标移到下一行
  • 结束循环

由于我们的在线编译器有时会截断行并删除每行前后的空格,因此我们正在通过在每行前放置点(.)来进行测试。

示例

#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行的星号和空格。我们可以很容易地修改公式,使用这个想法来演示其他的图案。

更新于: 2022年12月13日

491 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告