杨辉三角的形状如下(因为百度知道不支持输出空格,故以空格间隔。)
********1********(a+b)^0("^"表示次方)
*******1*1*******(a+b)¹
******1*2*1******(a+b)²
*****1*3*3*1*****(a+b)³
****1*4*6*4*1****(a+b)^4
我们知道,杨辉三角形的压于担某光特点是:每行的第一列为1,最后一列为1。从第三行开始,中间各列等于上一行中前列与本列的和。
可以看出,最后一列的列数正好等于行数(第n行有n个数)。
我们首先就想到,使用一个二重循环就可解决这个问题,但是其中有个问题需要解委庆信笑矿美物决,就是数字的位置。C语言中不能象PASCAL语言那样确定打印的坐标,但可以用空格来间接实现。认真观察一下印凯基攻就会发现,从第二行开始,每行的第一个数都比上一行左移一个位置,也就是说,每行第一个数之前的空格数逐行减去一个数字所占的列数。turboc2.0以字符输出时,每行80个字符360问答,我们把第一行的第一个数(本行就一个数即1)放在第法包积策践40个字符的位置处,且规定第个数字占4列,第二行的第一个数要向左移8列(因为下一行的第n个数和上一行的第n个数不在同一列,即并不对齐,而粒般失承京落纸导是刚好错开一个字符的距离)
代码如下:
#defineM10
num(i,j)
inti,j;
{
if(i==j||j==0)
return(1);
else
return(num于害承入静封视孙移殖(i-1,j-1)+num(i-1,j));
}
m顾ain()
{
intn,i,j,k;
clrscr();
printf("输入要打印的行难连茶给服赵混离数n:(n<=M)");
s至三唱移对爱织思canf("%d本婷合从字法板任阶降鲁",&n);
for(i=0;i { for(k=0;k<36沉边茶肥球业说许轮-2*i;k++)/*因为每个数占4列,所以下一行要少打2个空格就刚好错开*/ printf(""); for(j=0;j<=i;j++) printf("%4d",num(i,j)); printf("\n"); } getch(); }