题目来源:大工慕课 链接
作者:Caleb Sung
参考解答
#include<stdio.h>
void main()
{
int n,i,j,t,a[100][100]={'\0'};
printf("输入要输出杨辉三角的行数。\n");
scanf("%d",&n);
a[1][n]=1; //前两行初始化赋值为1
a[2][n-1]=1;
a[2][n]=1;
for(i=3;i<=n;i++) //全体赋值开始
{
a[i][n]=1; //每行两边元素初始化赋值为1
a[i][n-i+1]=1;
for(j=n-i+2;j<=n;j++) //每行非两边元素初始化根据算法赋值
a[i][j]=a[i-1][j]+a[i-1][j+1];
}
for(i=1;i<=n;i++)
{
for(t=n-i;t>=1;t--) //输出空格
printf("\t");
for(j=n-i+1;j<=n;j++) //输出元素
{
printf("%4d\t",a[i][j]); //使用%4d占位以实现右对齐
if(j==n) //判断换行
printf("\n");
}
}
}
参考解答
输入要输出杨辉三角的行数,值在5至9之间。
【输入】13
【输出】
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 10 45 120 210 252 210 120 45 10 1
1 11 55 165 330 462 462 330 165 55 11 1
1 12 66 220 495 792 924 792 495 220 66 12 1