在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中未初始化的部分参与运算但不参与输出,为什么会错呢?那些奇形怪状的数字是怎么来的呢? 展开
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中未初始化的部分参与运算但不参与输出,为什么会错呢?那些奇形怪状的数字是怎么来的呢? 展开
展开全部
因为你只是定义了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
就拿第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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询