在TC和VC6中编译杨辉三角的灵异现象

#include<stdio.h>main(){inti,j;inta[10][10];for(i=0;i<10;i++){a[i][0]=1;a[i][i]=1;}fo... #include<stdio.h>
main()
{ int i,j;
int a[10][10];
for(i=0;i<10;i++)
{ a[i][0]=1;
a[i][i]=1;
}
for(i=2;i<10;i++)
for(j=1;j<10;j++)//把10改成i就对了
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i<10;i++)
{
printf("\n");
for(j=0;j<i+1;j++)
printf("%d",a[i][j]);
}
}
在VC6中,按照我注释的部分做,就对了,但是我有个疑问,在VC6中未初始化的部分参与运算但不参与输出,为什么会错呢?那些奇形怪状的数字是怎么来的呢?
展开
 我来答
劳伤痕
2011-03-05 · TA获得超过793个赞
知道小有建树答主
回答量:364
采纳率:0%
帮助的人:445万
展开全部
因为你只是定义了a[i][0]=1; a[i][i]=1;
就拿第3列的数字说,当j<10的时候,按照程序,你仅仅是定义了a[2][0],a[2][2],
for(i=2;i<10;i++)
for(j=1;j<10;j++)//把10改成i就对了
a[i][j]=a[i-1][j]+a[i-1][j-1];
当执行了这段语句后,a[2][1]=2,可是呢a[2][2]=a[1][2]+a[1][1]=?+1
你之前的赋值语句给a[2][2]赋值为1就更改了,之后的程序就出现了错误
这里的a[1][2]你没有赋值,计算的时候就是系统随机的赋值,那么a[2][2]就出现了错误
当你把j<10,更改为j<i后,a[2][2]就还是保持原来的1
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式