1 题目
功能:打印杨辉三角
描述:打印给定行数的杨辉三角
2 思路
杨辉三角形
又称帕斯卡三角形、贾宪三角形、海亚姆三角形、巴斯卡三角形,是二项式系数的一种写法,形似三角形,在中国首现于南宋杨辉的《详解九章算法》得名,书中杨辉说明是引自贾宪的《释锁算书》,故又名贾宪三角形。
最基本的几个性质
每个数等于它上方两数之和 每行数字左右对称,由1开始逐渐变大 第n行的数字有n项 前n行共[(1+n)n]/2 个数
举例
打印出前 9 行的数字
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
3 代码
#include <stdio.h>
#define N 15
/**
功能:打印杨辉三角
描述:打印给定行数的杨辉三角
**/
int main(int argc, char const *argv[]) {
int i, j, k, n, a[N][N];
while(1) {
printf("请输入要打印的行数[范围在1~15之间]:"); // 控制在 15 行之内
scanf("%d",&n);
if (n>=1 && n<=15){
break;
} else {
printf("输入的行数不在规定范围内!\n");
continue;
}
}
printf("%d行杨辉三角打印如下:\n",n);
for(i=1; i<=n; i++)
a[i][1] = a[i][i] = 1;
for(i=3; i<=n; i++)
for(j=2; j<=i-1; j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=1; i<=n; i++){
for(k=1; k<=n-i; k++)
printf(" ");
for(j=1; j<=i; j++)
printf("%6d",a[i][j]);
printf("\n");
}
printf("\n");
}
示例结果:
请输入要打印的行数[范围在1~15之间]:20
输入的行数不在规定范围内!
请输入要打印的行数[范围在1~15之间]:30
输入的行数不在规定范围内!
请输入要打印的行数[范围在1~15之间]:10
10行杨辉三角打印如下:
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