在dev中运行可以得到结果 但在pta中运行结果不是一样的

img

img

img

img

下面是代码


#include <stdio.h>
int main()
{
    int N;
    int num[10][10];
    int limit;
    int i,j,k;
    scanf("%d",&N);
    for(i=0;i<N;i++)
    {
        for(j=0;j<N;j++)
        {
            if(i==0||i==j)
                num[i][j]=1;
            else
                num[i][j]=num[i-1][j]+num[i-1][j-1];
        }
    }
    limit=N-1;
    for(i=0;i<N;i++)
    {
        for(k=1;k<=limit;k++)
        {
            printf(" ");
        }
        limit--;
        for(j=0;j<i+1;j++)
        {
            printf("%4d",num[i][j]);
        }
        printf("\n");
    }
    return 0;
}

num[i][j]=num[i-1][j]+num[i-1][j-1];这里,i=0或者j=0的时候,i-1或者j-1是-1,数组越界了啊。
参考如下代码:

#include <stdio.h>
int main()
{
    int i,j,k,m,n;
    printf("请输入n的值:\n");
    scanf("%d",&n);
    for (i=1;i<=n;i++)
    {
        for (j=0;j<n-i ||(j>=n && j < 2*n-1);j++)
            printf("    ");
        for(k=1;k<=i;k++)
            printf("%4d",k);
        for (m=i-1;m>=1;m--)
            printf("%4d",m);
        printf("\n");
    }
    return 0;
}