要想完成这道题目,我们应该首先想到杨辉三角的定义:杨辉三角,是二项式系数在三角形中的一种几何排列。它的主要特点有以下几点:
-
每个数等于它上方两数之和。
-
每行数字左右对称,由1开始逐渐变大。
-
第n行的数字有n项。
-
前n行共[(1+n)n]/2 个数。
-
每行端点与结尾的数为1。 也就是说这个杨辉三角用C语言可以构造成一个二维数组,那么我们需要先创建一个二维数组,即:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int i, j; int m; int arr[20][20] = {};
然后我们再以循环的形式打印出这个杨辉三角的每一行每一列,在此之前我们还需要知道杨辉三角的不同行不同列数字间的规律:杨辉三角中第i行第j列的值是其第i-1行第j-1列的值与第i-1行第j列的值的和。
类似于图中的5就是上一行的1与4的和,所以此项规律以代码的形式呈现则表示为
for (i = 1;i<=m; i++) { for (j = 1; j <= i; j++) { arr[0][0] = 1; arr[i][j] = arr[i - 1][j - 1] + arr[i-1][j]; printf("%d ", arr[i][j]); }
所以最终的代码为:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int i, j; int m; int arr[20][20] = {}; scanf("%d", &m); for (i = 1;i<=m; i++) { for (j = 1; j <= i; j++) { arr[0][0] = 1; arr[i][j] = arr[i - 1][j - 1] + arr[i-1][j]; printf("%d ", arr[i][j]); } printf("\n"); } return 0; }
需要特别注意的是,由于数组的下标是从零开始计算的,所以我们在初始化数组的值时,也要将第一行第一列的值设定为arr[0][0]=1,好了,以上就是本题的答案和解析了,你学会了吗?