*:杨辉三角形的形式大致如下: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 .......(略) 他的主要特征是:从第三列开始,除第一个和最后一个数外;其它的数等于前一个数列的本位置数加上其前一个数。
希望有另外求解的网友能够贡献出来和大家一起分享。 其代码如下: #include<stdio.h> {int m,j1,j,i1,i,k[10],j[10],k1; k[0]=1;j[0]=1; for(i1=1;i1<10;i1++) k[i1]=0; for(i=1;i<=10;i++) {for(j1=1;j1<=i;j1++) j[j1]=k[j1]+k[j1-1]; j[i]=1; for(m=1;m<i;m++) k[m]=j[m]; for(k1=0;k1<i;k1++) printf("%d",j[k1]); printf("\n\n"); }
}
注:写于2004.9.29。这个题目我花了三小时才想出来,希望网友更好的算法能提供出来,供大家一起参考! 《本文完!》
[此贴子已经被作者于2004-10-06 01:56:16编辑过]
----------------解决方案--------------------------------------------------------
三个小时!!!
----------------解决方案--------------------------------------------------------
是的!
----------------解决方案--------------------------------------------------------
int m,j1,j,i1,i,k[10],j[10],k1;其中有变量 j 和 数组 j[10] 估计是不行的 我不知道在 TC中是怎样的,但是在 VC中,这样肯定是通不过编译的.
----------------解决方案--------------------------------------------------------
第4楼的网友你现在在学习”VC“吗?我现在在学习” C++“。希望以后多多指教。
----------------解决方案--------------------------------------------------------
你打印的是这样的啊:
1
11
121
1331
........
根本没放在中间
----------------解决方案--------------------------------------------------------
我编过。半个小时吧
比较简单的。 楼上的结果要想打印出来很简单,可以这样想:让输出的每一位数后面都加上一个空格,即:
printf("%d ",a[i][j]);%d后面有空格的,然后再在每一行的前面加上应加的空格就可以了。
----------------解决方案--------------------------------------------------------
#include<stdio.h> #define M 10 main() {int i,j,n; int a[M][M]; scanf("%d",&n); for(i=1;i<=n;i++) {a[i][1]=1; a[i][i]=1; } for(i=3;i<=n;i++) for(j=2;j<=i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i<=n;i++) {for(j=1;j<=n-i+1;j++) printf(" "); for(j=1;j<=i;j++) printf("%d ",a[i][j]); printf("\n"); } getch(); }
----------------解决方案--------------------------------------------------------