#include<stdio.h>
#define N 14
int main()
{
int i,j,n=0,a[N][N];
while(n<=0||n>=13)
{
printf("请输入需要打印的杨辉三角层数:");
scanf("%d",&n);
}
printf("%d层输出的杨辉三角如下:\n",n);
for(i=1;i<=n;i++)
{
a[i][1]=a[i][i]=1; //每一层起始和终点位置都为1,层数与每层个数相同
}
// for(i=1;i<=n;i++) //从第一层开始遍历
// {
// for(j=1;j<i;j++) //j<i是因为当j=i时会把第i行最后一个元素(第i个)也进行运算,而a[i-1][j]上并没有被初始化
// { //所以会得出错误的数据,所以要j<i
// if(i>=3&&j>=2) //如果行数>=3且列数>=2,则满足a[i][j]=a[i-1][j-1]+a[i-1][j](每行第i个元素除外)
// {
// a[i][j]=a[i-1][j-1]+a[i-1][j];
// }
// }
// }
// 16-25行这样写也行:(关键)
for(i=3;i<=n;i++)
{
for(j=2;j<i;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=1;i<=n;i++)
{
for(int k=1;k<=n-i;k++) //在相应位置打上“ ”
{
printf(" ");
}
for(j=1;j<=i;j++) //此处要求j<=i的原因是输出我们想要的数,多余的不输出
{
printf("%6d",a[i][j]); //%6d是为了整体输出美观
}
printf("\n");
}
return 0;
}