杨辉三角,是在二项式系数三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。
杨辉三角的每一位数都是上面两位数的和,如图:
用C语言可以对杨辉三角进行输出。程序如下:
方法一:用两个一维数组来计算杨辉三角并输出
#include#include void copy(const int* arr_2, int* arr_1) { assert(arr_1); assert(arr_2); int i_2 = 0; while (*(arr_2 + i_2)) { *(arr_1 + i_2) = *(arr_2 + i_2); i_2++; } } void print(int* arr_2) { int i_1 = 0; while (*(arr_2 + i_1)) { printf("%d ", *(arr_2 + i_1)); i_1++; } printf("n"); } int main() { int arr1[10] = { 1 }; int arr2[10] = { 1 }; int n = 0; int i = 0; int j = 0; scanf("%d", &n);//输入杨辉三角的行数 printf("n"); printf("%dn", arr1[0]); //行数 for (j = 2; j < n+1; j++) { //每行数 for (i = 1; i < j; i++) { arr2[i] = arr1[i] + arr1[i - 1]; } print(arr2, i);//打印杨辉三角的一行 copy(arr2, arr1);//复制函数 } return 0; }
方法二:用一个二维数组计算并输出杨辉三角
#includeint main() { int arr[10][10] = { 0 }; int i = 0; int j = 0; int n = 0; scanf("%d", &n);//输入杨辉三角的行数 printf("n"); //计算杨辉三角的数,放入二维数组中,只用到下三角 for (i = 0; i < n; i++)//行数 { for (j = 0; j <= i; j++) { if (j == 0) { arr[i][j] = 1; } if (i == j) { arr[i][j] = 1; } if ((j < i) && (j != 0)) { arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; } } } //输出二维数组,即杨辉三角 for (i = 0; i < n; i++) { for (j = 0; j <= i; j++) { printf("%d ", arr[i][j]); } printf("n"); } return 0; }
两种方法输出的杨辉三角结果都一样,如下图:
要想输出为金字塔形状的,只需在输出每一行之前输出相应的空格数。



