1974-输出杨辉三角

为什么这个主函数的循环跳不出来,说是输出超限
#include<stdio.h>
#define N 40
void yanghui(int a[][N],int n);
void output(int a[][N],int n);
int main()
{
int n,m;
int a[N][N];
while(scanf("%d",&n)!=EOF){
yanghui(a,n);
output(a,n);
printf("\n");
}
return 0;
}

void yanghui(int a[][N],int n)
{
int i,j;
for(i=1;i<=n;i++){
for(j=1;j<=i;j++){
if(j==1||j==i){
a[i][j]=1;
}
else{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
}
}
void output(int a[][N],int n)
{
int i,j;
for(i=1;i<=n;i++){
for(j=1;j<=i;j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

你代码是运行报错,不能输出吗