打印杨辉三角,求带注释

给出n,1小于等于n小于等于10
以正三角形输出,每个数字4位
新手求讲解
C语言哈,int main()


#include<stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);
    int i=0,k;
    int j=0;
    int arr[30][30]= {0};
    for(i=0; i<n; i++) //将第一列和最后一列元素赋值为1
    {
        for(j=0; j<=i; j++)
        {
            if(j==0||j==i)
            {
                arr[i][j]=1;
            }
        }
    }
    for(i=2; i<n; i++) //从第三行第二列开始,每个元素都是当前元素的前一行和前一行的前一列元素之和
    {
        for(j=1; j<=i; j++) //每一行都对应着与之相同的列数,所以内层循环限定条件为j<=i
        {
            arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
        }
    }
    for(i=0; i<n; i++)
    {
        for(k=0; k<n-i; k++)
        {
            printf("  ");
        }
        for(j=0; j<=i; j++)
        {
            printf("%4d",arr[i][j]);
        }
        putchar('\n');
    }
    return 0;
}