#include <stdio.h>
#define SIZE 10 //规定输出层数
int main()
{
int a[SIZE+1][SIZE*2+1]={0}; //用一个二维数组容纳杨辉三角
int i,j; //定义两层循环变量
int b; //b用于存储最底层中间的数(最大数)
int len=0; //最大数的宽度
//初始化第一个值
a[0][SIZE]=1;
//计算数组中每一个位置对应的值
for(i=1;i<SIZE;i++)
{
for(j=1;j<SIZE*2;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j+1];
}
}
//计算最大数的宽度,以规定输出宽度
if(0==SIZE%2)
b=a[SIZE-1][SIZE+1];
else
b=a[SIZE-1][SIZE];
while(b>0)
{
b/=10;
len++;
}
//打印数组(杨辉三角)
printf("高度为%d的杨辉三角如下:\n",SIZE);//
for(i=0;i<SIZE;i++)
{
for(j=1;j<SIZE*2;j++)
{
if(a[i][j]==0)
printf("%-*c",len,' ');
else
printf("%-*d",len,a[i][j]);
}
printf("\n");
}
return 0;
}