1.什么是杨辉三角
在计算机科学和数学领域,杨辉三角是一种具有广泛应用的数列。它以中国南宋数学家杨辉的名字命名,展示了一个二项式系数构成的三角形阵列。在这个三角形中,每一行的数字都是前一行相邻两数之和。杨辉三角不仅在组合数学中有重要应用,还可以用来解决许多实际问题,如计算排列、组合等。
在C语言中,我们可以使用循环结构和数组来实现杨辉三角的打印。本文将详细介绍如何使用C语言实现杨辉三角的生成,帮助读者掌握这一基本算法,并在实际编程中灵活运用。
简答来说:每个数等于它上方两数之和。
2.思路
本文将使用二维数组来实现杨辉三角:
定义一个二维数组(这里以5行5列为例),使用for循环将所有元素赋值为1,只输出对角线一半的元素
图例:
然后,从第3行,第1列开始的元素的值为 a[i][j]=a[i-1][j-1]+a[i-1][j];
到这里整个杨辉三角已经出来了,仅需要在最后使用for循环在每一行打相应数量的空格即可
3.实现
#include<stdio.h>
void main(){
int i,j,a[5][5];
for(i=0;i<5;i++){
for(j=0;j<5;j++){
a[i][j]=1;
}
}
for(i=2;i<5;i++){
for(j=1;j<i;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=0;i<5;i++){
for(j=0;j<5-i-1;j++){
printf(" ");
}
for(j=0;j<=i;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}
文字解读
- 定义一个二维数组a[5][5],用于存储杨辉三角的数据。
- 使用两层循环,将数组a的所有元素初始化为1。
- 使用两层循环,计算杨辉三角的其他元素。从第三行开始,每个元素的值等于它上方的两个相邻元素的和。具体来说,a[i][j] = a[i-1][j-1] + a[i-1][j]。
- 使用两层循环,打印出杨辉三角。外层循环控制行数,内层循环分别控制每行的空格和数字。空格的数量为5 - i - 1,数字的数量为i + 1。
4.自定义行列数的杨辉三角:
实现原理及思路本质相同,仅需要修改循环次数即可(自行参考即可)
#include<stdio.h>
void main(){
int i,j,n;
scanf("%d",&n);
int a[n][n];
for(i=0;i<n;i++){
for(j=0;j<=i;j++){
a[i][j]=1;
}
}
for(i=2;i<n;i++){
for(j=1;j<i;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=0;i<n;i++){
for(j=0;j<n-i-1;j++){
printf(" ");
}
for(j=0;j<=i;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}