杨辉三角形问题
用数组打印:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
(红色的数不为1)
下列是我编写的程序:
main()
{
int array[10][10];
int i,j;
array[0][0]=1;
printf("%d\n",array[0][0]);
for(i=1;i<10;i++)
{
array[i][i-i]=1;
printf("%d",array[i][i-i]);
for(j=1;j<=i;j++)
{
array[i][j]=array[i-1][j-1]+array[i-1][j];
printf("%4d",array[i][j]);
}
printf("\n");
}
getch();
}
但是结尾的数不为1,而是1513,为什么??
[此贴子已经被作者于2005-8-11 16:45:21编辑过]
搜索更多相关的解决方案:
杨辉三角
----------------解决方案--------------------------------------------------------
array[i][j]=array[i-1][j-1]+array[i-1][j];
array[9][9]=array[8][8]+array[8][9],
array[8][9]等于多少呢?
----------------解决方案--------------------------------------------------------
定义a[10][10]是不能放10个东西进去的.......因为最后一个a[10][10]要放一个'\0'
好象是这样的。。。。。。
----------------解决方案--------------------------------------------------------
修改了一下程序,把数组全部赋值后再输出,想了半天终于能运行了
main()
{
int i,j;
int a[10][10];
for(i=0;i<10;i++)
a[i][0]=a[i][i]=1;
for(i=2;i<10;i++)
for(j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<10;i++)
{
for(j=0;j<=i;j++)
printf("%5d",a[i][j]);
printf("\n");
}
getch();
}
----------------解决方案--------------------------------------------------------
后面的数忘了赋值,大意了...
----------------解决方案--------------------------------------------------------
以下是引用天堂的叛逆者在2005-8-11 18:30:45的发言:
定义a[10][10]是不能放10个东西进去的.......因为最后一个a[10][10]要放一个'\0'
好象是这样的。。。。。。
a[0]-a[9]不是10个吗? ----------------解决方案--------------------------------------------------------