#include <stdio.h>
#include <stdlib.h>
#define N 10 // 打印杨辉三角的行数
#define M 4 // 每个数组打印的字符数
int a[N][N] = {0};
void GetTriangle(int n) {
int i;
if (n==0) {
a[n][0]=1;
} else if (n == 1) {
GetTriangle(n-1);
a[n][0]=1;
a[n][1]=1;
} else {
GetTriangle(n-1);
a[n][0]=1;
a[n][n]=1;
for(i=1; i<n; i++) {
a[n][i]=a[n-1][i-1] + a[n-1][i];
}
}
}
int main()
{
int i,j,k;
int max_len=0;
int len,start;
GetTriangle(N);
// 假定每个数字,使用4个字符宽度来打印
max_len = N*M;
// N行,有N个数据,比如第10行有10个数据
for(i=0; i<N; i++) {
start = (max_len - (i+1)*M)/2;
for(j=0; j<start; j++) {
printf(" "); //打印前置空格
}
for(k=0;k<=i;k++) {
printf("%3d ", a[i][k]);
}
printf("\n");
}
getchar();
}