回复 2楼 额外覆盖
#include <stdio.h>
int main(void)
{
int n;
int y[9][9];
int i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
y[i][j]=0;
}
y[0][0]=1;
for(i=1;i<n;i++)
for(j=0;j<n;j++)
{
if(j==0||j==i) y[i][j]=1; else
y[i][j]=y[i-1][j-1]+y[i-1][j];
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(y[i][j]>0)
{
printf("%4.0d",y[i][j]);
}
}
for(j=0;j<n;j++)
{
if(y[n-1-i][n-1-j]>1||n-1-j==0&&n-1-i!=0)
{
printf("%4.0d",y[n-1-i][n-1-j]);
}
}
printf("\n");
}
return 0;
}
我稍稍改了点,可是发现就出问题了,看样子是没有初始化的问题,可是是为什么呢?y[0][0]的值应该可以在下面for(i=0;i<n;i++)这边赋值啊。怎么不可以呢?
这是我改后的:
#include <stdio.h>
int main(void)
{
int n;
int y[9][9];
int i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
y[i][j]=0;
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(j==0||j==i) y[i][j]=1; else
y[i][j]=y[i-1][j-1]+y[i-1][j];
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(y[i][j]>0)
{
printf("%4.0d",y[i][j]);
}
}
for(j=0;j<n;j++)
{
if(y[n-1-i][n-1-j]>1||n-1-j==0&&n-1-i!=0)
{
printf("%4.0d",y[n-1-i][n-1-j]);
}
}
printf("\n");
}
return 0;
}