首页 > 编程笔记

使用C语言打印杨辉三角

杨辉三角是一种由二项式系数构成的三角形,其性质在组合数学中具有重要的作用。它是以明朝数学家杨辉的名字命名的,也被称为帕斯卡三角形。

在 C语言中,我们可以使用嵌套循环和组合数公式来打印出杨辉三角。下面将介绍如何使用 C语言来实现这个功能。

首先,我们需要向用户询问他希望打印多少行的杨辉三角。这可以通过在程序中使用 scanf 函数来实现。例如,我们可以使用以下代码来询问用户:
int rows;
printf("Enter the number of rows: ");
scanf("%d", &rows);
在上面的代码中,我们定义了一个 rows 变量来存储用户输入的行数。然后,我们使用 printf 函数来向用户请求输入,并使用 scanf 函数来读取用户输入的值。

接下来,我们需要使用嵌套循环来打印出指定行数的杨辉三角。外层循环用于打印每一行,内层循环用于计算每一行的数字。以下是一个实现打印杨辉三角的示例代码:
int i, j, k, coefficient = 1;

for (i = 0; i < rows; i++) {
  for (j = 1; j < rows - i; j++) {
    printf("  ");
  }

  for (k = 0; k <= i; k++) {
    printf("%4d", coefficient);
    coefficient = coefficient * (i - k) / (k + 1);
  }

  printf("\n");
}
在上面的代码中,我们首先定义了三个循环变量 i、j 和 k,以及一个变量 coefficient 来计算组合数。外层循环从第一行开始,一直打印到指定的行数为止。内层循环用于计算每一行的数字,其中第一个内层循环用于打印前导空格,使得杨辉三角形状更加美观。

在第二个内层循环中,我们计算出当前位置的数字,即组合数。我们首先打印当前位置的数字,使用 %4d 格式化输出,使得每个数字占用四个字符的宽度。然后,我们使用组合数公式计算下一个位置的数字。

具体来说,我们将上一个位置的数字乘以当前行数减去当前位置的行数,再除以当前位置的行数加一。这个公式可以用于计算杨辉三角中每个数字的值。

最后,我们使用 printf 函数打印出换行符,以便下一行的数字可以正确

下面是完整代码的实现:
#include <stdio.h>

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

    printf("Enter the number of rows: ");
    scanf("%d", &rows);

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

        for (int 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;
}
运行结果:

Enter the number of rows: 6
              1
            1   1
          1   2   1
        1   3   3   1
      1   4   6   4   1
    1   5  10  10   5   1

代码解析:

首先,在程序开始时,提示用户输入要打印的行数,并使用 scanf 函数读取用户输入的值。

在 for 循环中,外层循环控制打印的行数,内层循环控制打印每行的元素。

第一个内层循环用于打印空格,以便正确对齐输出。空格的数量等于当前行数与总行数之差。这是通过计算总行数减去当前行数来实现的。

第二个内层循环用于计算并打印当前行的数字。如果是第一列或第一行,则将其设置为 1,否则使用公式 coef = coef * (i - j + 1) / j 来计算数字。在每次计算后,使用 printf 函数打印数字,使用 %4d 进行格式化,确保每个数字都被正确地对齐。

最后,使用 printf 函数打印换行符,以便开始新的一行的打印。

以上就是用 C语言打印杨辉三角的完整过程,希望可以帮助你了解如何在 C言中使用循环和条件语句编写程序。

推荐阅读