#include<stdio.h> int main() { int n =0; scanf("%d",&n); int arr[31][31]={0}; //定义一个二维数组同时初始化为零 arr[1][1]=1; //赋第一个值 for(int i = 2;i<n+1;++i) //从原数组第三行第二列开始循环赋值,因为顶上一行为零,所以多循环一行一列 { for(int j = 1;j<n+1;++j) { arr[i][j]=arr[i-1][j-1]+arr[i-1][j]; //等于左上加上方的和 if(arr[i][j]==0) break; } } for(int i = 1;i<n+1;++i) //因为最外围是最开始初始化的零,所以不打印,同时多打印一行 { for(int j = 1;j<n+1;++j) { if(arr[i][j]!=0) printf("%5d",arr[i][j]); } printf("\n"); } return 0; }