# C 程序：打印金字塔和图案

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

#### 在此示例中，您将学习在 C 编程中打印半金字塔，倒金字塔，全金字塔，倒全金字塔，帕斯卡三角形和弗洛伊德三角形。

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

*   [C `if...else`语句](/c-programming/c-if-else-statement)
*   [C `for`循环](/c-programming/c-for-loop)
*   [C `while`和`do...while`循环](/c-programming/c-do-while-loops)
*   [C `break`和`continue`](/c-programming/c-break-continue-statement)

* * *

这是您在此页面中找到的程序列表。

| C 示例 |
| --- |
| `*`的半金字塔 |
| 数字半金字塔 |
| 字母的半金字塔 |
| `*`的倒置半金字塔 |
| 倒置半金字塔 |
| `*`的完整金字塔 |
| 数字的完整金字塔 |
| `*`的倒金字塔 |
| 帕斯卡三角形 |
| 弗洛伊德三角形 |

* * *

### 示例 1：`*`的半金字塔

```c
*
* *
* * *
* * * *
* * * * * 
```

**C 程序**

```c
#include <stdio.h>
int main() {
   int i, j, rows;
   printf("Enter the number of rows: ");
   scanf("%d", &rows);
   for (i = 1; i <= rows; ++i) {
      for (j = 1; j <= i; ++j) {
         printf("* ");
      }
      printf("\n");
   }
   return 0;
} 
```

* * *

### 示例 2：数字的半金字塔

```c
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5 
```

**C 程序**

```c
#include <stdio.h>
int main() {
   int i, j, rows;
   printf("Enter the number of rows: ");
   scanf("%d", &rows);
   for (i = 1; i <= rows; ++i) {
      for (j = 1; j <= i; ++j) {
         printf("%d ", j);
      }
      printf("\n");
   }
   return 0;
} 
```

* * *

### 示例 3：字母的半金字塔

```c
A
B B
C C C
D D D D
E E E E E 
```

**C 程序**

```c
#include <stdio.h>
int main() {
   int i, j;
   char input, alphabet = 'A';
   printf("Enter an uppercase character you want to print in the last row: ");
   scanf("%c", &input);
   for (i = 1; i <= (input - 'A' + 1); ++i) {
      for (j = 1; j <= i; ++j) {
         printf("%c ", alphabet);
      }
      ++alphabet;
      printf("\n");
   }
   return 0;
} 
```

* * *

### 示例 4：`*`的倒置半金字塔

```c
* * * * *
* * * *
* * * 
* *
* 
```

**C 程序**

```c
#include <stdio.h>
int main() {
   int i, j, rows;
   printf("Enter the number of rows: ");
   scanf("%d", &rows);
   for (i = rows; i >= 1; --i) {
      for (j = 1; j <= i; ++j) {
         printf("* ");
      }
      printf("\n");
   }
   return 0;
} 
```

* * *

### 示例 5：数字的倒置金字塔

```c
1 2 3 4 5
1 2 3 4 
1 2 3
1 2
1 
```

**C 程序**

```c
#include <stdio.h>
int main() {
   int i, j, rows;
   printf("Enter the number of rows: ");
   scanf("%d", &rows);
   for (i = rows; i >= 1; --i) {
      for (j = 1; j <= i; ++j) {
         printf("%d ", j);
      }
      printf("\n");
   }
   return 0;
} 
```

* * *

### 示例 6：`*`的完整金字塔

```c
 *
      * * *
    * * * * *
  * * * * * * *
* * * * * * * * * 
```

**C 程序**

```c
#include <stdio.h>
int main() {
   int i, space, rows, k = 0;
   printf("Enter the number of rows: ");
   scanf("%d", &rows);
   for (i = 1; i <= rows; ++i, k = 0) {
      for (space = 1; space <= rows - i; ++space) {
         printf("  ");
      }
      while (k != 2 * i - 1) {
         printf("* ");
         ++k;
      }
      printf("\n");
   }
   return 0;
} 
```

* * *

### 示例 7：数字的完整金字塔

```c
 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 
```

**C 程序**

```c
#include <stdio.h>
int main() {
   int i, space, rows, k = 0, count = 0, count1 = 0;
   printf("Enter the number of rows: ");
   scanf("%d", &rows);
   for (i = 1; i <= rows; ++i) {
      for (space = 1; space <= rows - i; ++space) {
         printf("  ");
         ++count;
      }
      while (k != 2 * i - 1) {
         if (count <= rows - 1) {
            printf("%d ", i + k);
            ++count;
         } else {
            ++count1;
            printf("%d ", (i + k - 2 * count1));
         }
         ++k;
      }
      count1 = count = k = 0;
      printf("\n");
   }
   return 0;
} 
```

* * *

### 示例 8：`*`的倒置金字塔

```c
* * * * * * * * *
  * * * * * * *
    * * * * *
      * * *
        * 
```

**C 程序**

```c
#include <stdio.h>
int main() {
   int rows, i, j, space;
   printf("Enter the number of rows: ");
   scanf("%d", &rows);
   for (i = rows; i >= 1; --i) {
      for (space = 0; space < rows - i; ++space)
         printf("  ");
      for (j = i; j <= 2 * i - 1; ++j)
         printf("* ");
      for (j = 0; j < i - 1; ++j)
         printf("* ");
      printf("\n");
   }
   return 0;
} 
```

* * *

### 示例 9：帕斯卡三角

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

**C 程序**

```c
#include <stdio.h>
int main() {
   int rows, coef = 1, space, i, j;
   printf("Enter the number of rows: ");
   scanf("%d", &rows);
   for (i = 0; i < rows; i++) {
      for (space = 1; space <= rows - i; space++)
         printf("  ");
      for (j = 0; j <= i; j++) {
         if (j == 0 || i == 0)
            coef = 1;
         else
            coef = coef * (i - j + 1) / j;
         printf("%4d", coef);
      }
      printf("\n");
   }
   return 0;
} 
```

* * *

### 示例 10：弗洛伊德三角

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

**C 程序**

```c
#include <stdio.h>
int main() {
   int rows, i, j, number = 1;
   printf("Enter the number of rows: ");
   scanf("%d", &rows);
   for (i = 1; i <= rows; i++) {
      for (j = 1; j <= i; ++j) {
         printf("%d ", number);
         ++number;
      }
      printf("\n");
   }
   return 0;
} 
```