回复 10楼 额外覆盖
当i=0时,i和j不是相等的吗?那应该是执行if之后的语句,所以应该没有问题吧?
我也找出问题了哈,是在赋值的时候哈。所以我想借用你的思路直接用逆序输出的办法了。所以前面我就完全按照杨辉三角的办法,而不对整个数组进行初始化。
也就是:
for(i=0;i<n;i++)
for(j=0;j<=i;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<=i;j++)
{
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");
这样就行了哈。十分感谢你的回答哈。
不过你最后的那个if判读我不太懂啊(逆序的)能解释一下吗?
y[n-1-i][n-1-j]>1||n-1-j==0&&n-1-i!=0
这个到底判断顺序是怎么样的啊?
是y[n-1-i][n-1-j]>1或n-1-j==0符合其中一个然后都符合n-1-i!=0
还是符合y[n-1-i][n-1-j]>1或是n-1-j==0&&n-1-i!=0
就是逆序输出这个小弟还有点不懂,望指教哈(*^__^*) ……