# C++ 程序：创建金字塔图案

> 原文： [https://www.programiz.com/cpp-programming/examples/pyramid-pattern](https://www.programiz.com/cpp-programming/examples/pyramid-pattern)

#### 在 C++ 编程中使用控制语句打印半金字塔，金字塔，倒金字塔，帕斯卡三角形和弗洛伊德三角形的示例。

要理解此示例，您应该了解以下 [C++ 编程](/cpp-programming "C++ tutorial")主题：

*   [C++ `if`，`if...else`和嵌套`if...else`](/cpp-programming/if-else)
*   [C++ `for`循环](/cpp-programming/for-loop) 
*   [C++ `while`和`do...while`循环](/cpp-programming/do-while-loop)
*   [C++ `break`和`continue`语句](/cpp-programming/break-continue)

* * *

源代码清单：

+   [使用`*`字符和数字打印三角形](#triangle)
+   [使用`*`和数字打印倒三角形](#inverted_triangle)
+   [打印金字塔的代码](#pyramid)
+   [打印倒金字塔的代码](#reverse_pyramid)
+   [打印 Pascal 三角形的代码](#pascal_triangle)
+   [打印弗洛伊德三角形的代码](#floyd_triangle)

## 使用`*`，数字和字符打印三角形的程序

* * *

#### 示例 1：使用`*`打印半金字塔的程序

```cpp
*
* *
* * *
* * * *
* * * * *
```

**源代码**

```cpp
#include <iostream>
using namespace std;

int main()
{
    int rows;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = 1; i <= rows; ++i)
    {
        for(int j = 1; j <= i; ++j)
        {
            cout << "* ";
        }
        cout << "\n";
    }
    return 0;
} 
```

* * *

#### 示例 2：使用数字打印半金字塔的程序

```cpp
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
```

**源代码**

```cpp
#include <iostream>
using namespace std;

int main()
{
    int rows;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = 1; i <= rows; ++i)
    {
        for(int j = 1; j <= i; ++j)
        {
            cout << j << " ";
        }
        cout << "\n";
    }
    return 0;
} 
```

* * *

#### 示例 3：使用字母打印半金字塔的程序

```cpp
A
B B
C C C
D D D D
E E E E E
```

**源代码**

```cpp
#include <iostream>
using namespace std;

int main()
{
    char input, alphabet = 'A';

    cout << "Enter the uppercase character you want to print in the last row: ";
    cin >> input;

    for(int i = 1; i <= (input-'A'+1); ++i)
    {
        for(int j = 1; j <= i; ++j)
        {
            cout << alphabet << " ";
        }
        ++alphabet;

        cout << endl;
    }
    return 0;
} 
```

## 使用`*`和数字打印倒置半金字塔的程序

* * *

#### 示例 4：使用`*`打印倒置半金字塔

```cpp
* * * * *
* * * *
* * * 
* *
*
```

**源代码**

```cpp
#include <iostream>
using namespace std;

int main()
{
    int rows;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = rows; i >= 1; --i)
    {
        for(int j = 1; j <= i; ++j)
        {
            cout << "* ";
        }
        cout << endl;
    }

    return 0;
}
```

* * *

#### 示例 5：使用数字打印倒置半金字塔

```cpp
1 2 3 4 5
1 2 3 4 
1 2 3
1 2
1
```

**源代码**

```cpp
#include <iostream>
using namespace std;

int main()
{
    int rows;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = rows; i >= 1; --i)
    {
        for(int j = 1; j <= i; ++j)
        {
            cout << j << " ";
        }
        cout << endl;
    }

    return 0;
}
```

## 使用`*`和数字显示金字塔和倒金字塔的程序

* * *

#### 示例 6：使用`*`打印完整金字塔的程序

```cpp
 *
      * * *
    * * * * *
  * * * * * * *
* * * * * * * * *
```

**源代码**

```cpp
#include <iostream>
using namespace std;

int main()
{
    int space, rows;

    cout <<"Enter number of rows: ";
    cin >> rows;

    for(int i = 1, k = 0; i <= rows; ++i, k = 0)
    {
        for(space = 1; space <= rows-i; ++space)
        {
            cout <<"  ";
        }

        while(k != 2*i-1)
        {
            cout << "* ";
            ++k;
        }
        cout << endl;
    }    
    return 0;
} 
```

* * *

#### 示例 7：使用数字打印金字塔的程序

```cpp
 1
      2 3 2
    3 4 5 4 3
  4 5 6 7 6 5 4
5 6 7 8 9 8 7 6 5
```

**源代码**

```cpp
#include <iostream>
using namespace std;

int main()
{
    int rows, count = 0, count1 = 0, k = 0;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = 1; i <= rows; ++i)
    {
        for(int space = 1; space <= rows-i; ++space)
        {
            cout << "  ";
            ++count;
        }

        while(k != 2*i-1)
        {
            if (count <= rows-1)
            {
                cout << i+k << " ";
                ++count;
            }
            else
            {
                ++count1;
                cout << i+k-2*count1 << " ";
            }
            ++k;
        }
        count1 = count = k = 0;

        cout << endl;
    }
    return 0;
} 
```

* * *

#### 示例 8：使用`*`打印倒置完整金字塔

```cpp
* * * * * * * * *
  * * * * * * *
    * * * * *
      * * *
        *
```

**源代码**

```cpp
#include <iostream>
using namespace std;

int main()
{
    int rows;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = rows; i >= 1; --i)
    {
        for(int space = 0; space < rows-i; ++space)
            cout << "  ";

        for(int j = i; j <= 2*i-1; ++j)
            cout << "* ";

        for(int j = 0; j < i-1; ++j)
            cout << "* ";

        cout << endl;
    }

    return 0;
} 
```

* * *

### 示例 9：打印 Pascal 三角形

```cpp
 1
         1   1
       1   2   1
     1   3   3    1
   1  4    6   4   1
 1  5   10   10  5   1 
```

**源代码**

```cpp
#include <iostream>
using namespace std;

int main()
{
    int rows, coef = 1;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = 0; i < rows; i++)
    {
        for(int space = 1; space <= rows-i; space++)
            cout <<"  ";

        for(int j = 0; j <= i; j++)
        {
            if (j == 0 || i == 0)
                coef = 1;
            else
                coef = coef*(i-j+1)/j;

            cout << coef << "   ";
        }
        cout << endl;
    }

    return 0;
} 
```

* * *

### 示例 10：打印弗洛伊德三角形

```cpp
1
2 3
4 5 6
7 8 9 10
```

**源代码**

```cpp
#include <iostream>
using namespace std;

int main()
{
    int rows, number = 1;

    cout << "Enter number of rows: ";
    cin >> rows;

    for(int i = 1; i <= rows; i++)
    {
        for(int j = 1; j <= i; ++j)
        {
            cout << number << " ";
            ++number;
        }

        cout << endl;
    }

    return 0;
}
```