打印杨辉三角,该怎么解决

打印杨辉三角
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
const int n=10;
int i,j,a[n][n];


for(i=0;i<n;i++) //三角形 第一列为1 腰上为1
{
a[i][i]=1;
a[i][1]=1;
}

for(i=3;i<n;i++)  
for(j=2;j<i-1;j++)
a[i+1][j]=a[i][j-1]+a[i][j-1]; //每个数字等于上一行的左右两个数字之和


for(i=1;i<n;i++) // 输出 三角形  
for(j=1;j<=i;j++)
{
cout<<setw(5)<<a[i][j]<<" ";  
cout<<endl;
}

return 0;

这段程序 看了半天不知道是哪里出错了 大家 指点指点 感谢
}

------解决方案--------------------
C/C++ code

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    const int n=10;
    int i,j,a[n][n];
    
    
    for(i=0;i<n;i++) //三角形 第一列为1 腰上为1
    {
        a[i][i]=1;
        a[i][1]=1;
    }
    
    for(i=2;i<n-1;i++)   // i<n下面i+1数组会溢出
        for(j=2;j<=i;j++)  // j应该少于等于i
            a[i+1][j]=a[i][j-1]+a[i][j]; //每个数字等于上一行的左右两个数字之和
        
        
        for(i=1;i<n;i++)// 输出 三角形 
        {
            for(j=1;j<=i;j++)
            {
                cout<<setw(5)<<a[i][j]<<" ";   
            //    cout<<endl;   //换行要放在下面
            }
            cout<<endl;
        }
            
            return 0;
            
    //        这段程序 看了半天不知道是哪里出错了 大家 指点指点 感谢
}

------解决方案--------------------

#include<stdio.h>

int main()
{
 int n=10;
 int i,j,a[11][11];


for(i=1;i<=n;i++) //三角形 第一列为1 腰上为1
 {
 a[i][1]=1;
 a[i][i]=1;
 }

 for(i=3;i<=n;i++)
for(j=2;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j]; //每个数字等于上一行的左右两个数字之和


 for(i=1;i<=n;i++) // 输出 三角形
 { for(j=1;j<=i;j++)
 {
printf("%d",a[i][j]);
 }
 printf("\n");
 }
 return 0;

}

------解决方案--------------------


#include<iostream>
using namespace std;
int main()
{
 int n;
 int i,j,a[100][100];
cin>>n;
 while(n)
 {
for(i=1;i<=n;i++) 
 {
 a[i][1]=1;
 a[i][i]=1;
 }

 for(i=3;i<=n;i++)
for(j=2;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j]; 
 for(i=1;i<=n;i++)
 { 
for(j=1;j<=i;j++)
cout<<a[i][j]<<' ';
cout<<endl;
 }
cout<<endl;
 scanf("%d",&n);
}
 return 0;

}