- 主题
- 0
- 积分
- 0
- 贝壳
- 0 个
- 注册时间
- 2006-12-24
- 最后登录
- 2006-12-24
|
[原创]
[watermark]main()
{
int i,k,t,s=1;
for(i=0;i<+9;i++)
{printf("%5d", s);
for(k=i,t=1;k>=0;k- -,t++)
if(k) {s=s*k/t; printf("%5d", s);}
else printf("\n");
}
}
本程序之所以这样编写,是因为扬辉三角可以看成一个对称的“图形”,且没一行的第一个数和最后一个数都是1,所以没一行的开始都打印出1即“printf("%d", s);”。还有扬辉三角的来由是二项展开式(a+b)n的系数,即Cnr,且Cnr=Cnr-1*[n-(r-1)]/(r-1),所以可用“(k=i;k>=0;k- -,t++) ”和s=s*k/t来表示s的后面一个数。用else来控制换行。
[/watermark] |
|