注意!!:我所使用的陣列是由1開始,0我不使用。因此,各位同學自行練習時,請考慮陣列起始位置與陣列大小。
#include<stdio.h>
int main()
{
int i,j,k;
int size=15;
printf("Input layer of Pascal Triangle:");
scanf("%d",&size);
int a[size+1][size+1];
for(i=1;i<=size;i++) //initialize array
{
for(j=1;j<=size;j++)
{
if(i==1 || j==1)
a[i][j]=1;
else
a[i][j]=0;
}
}
for(i=2;i<=size;i++) //calculate the triangle
{
for(j=2;j<=size-i+1;j++)
{
a[i][j]=a[i-1][j]+a[i][j-1];
}
}
for(i=1;i<=size;i++) //print result
{
for(j=1;j<=size;j++)
{
if(a[i][j]!=0)
printf(" %3d ",a[i][j]);
}
printf("\n");
}
printf("==========================================\n");
for(i=1;i<=size;i++)
{
for(j=1;j<=size-i;j++)
{
printf(" ");
}
k=i;
for(j=1;j<=i;j++,k--)
{
if(a[k][j]!=0)
printf("%5d ",a[k][j]);
}
printf("\n");
}
return 0;
}