C语言 求杨辉三角的前n行数据

问题遇到的现象和发生背景

求杨辉三角的前n行数据
输入格式:
输入n(n<10)值。

输出格式:
输出杨辉三角的前n行数据,每个数据占4列。

输入样例:
5
输出样例:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1

问题相关代码,请勿粘贴截图

我的代码

#include <stdio.h>

int main()
{
  int n,i,j;
  int a[10][10];
  scanf("%d",&n);
  for(i=0;i<n;i++)
{
    for(j=0;j<n;j++)
  {
      if(j==0||j==i)
        a[i][j]=1;
      else
        a[i][j]=a[i-1][j]+a[i-1][j-1];
  }

}
  for(i=0;i<n;i++)
    for(j=0;j<n;j++)
    {   if(i==j)
            printf("%d\n",a[i][j]);
        else
            printf("%d ",a[i][j]);
    }

  return 0;
}



运行结果及报错内容

输入 5
输出
5
1
4199803 4210688 4210688 6422036 1 1
8410491 8421376 10632724 1 2 1
16831867 19054100 1 3 3 1
35885967 1 4 6 4 1

求错误原因和修正方式,感谢

内层循环条件改为j <= i

内层循环的判断条件应该是j<=i
每行输出和赋值的个数应该等于行数
下面输出了没赋值的部分所以会有随机数