针对杨辉三角形我使用的是二维数组以及循环的嵌套。
杨辉三角性质
-
每个数等于它上方两数之和。
-
每行数字左右对称,由1开始逐渐变大。
-
第n行的数字有n项。
-
前n行共[(1+n)n]/2 个数。
-
第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。
-
第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。
-
每个数字等于上一行的左右两个数字之和。
#include<stdio.h>
int main()
{
int a[14][14],i,j,n,q,l;
a[1][1]=1;
a[2][1]=1;
a[2][2]=1;
scanf("%d",&n);
n+=1;
for(i=3;i<=n;i++)
a[i][1]=1;
for(i=3;i<=n;i++)
a[i][i]=1;
for(i=3;i<=n;i++)
{
for(j=2;j<i;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
q=0;
for(i=1;i<=n;i++)
{
for(l=(n-q)*2-2;l>=1;l--)
printf(" ");
q+=1;
for(j=1;j<=i;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
return 0;
}