下面是代码
#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;
}