用C语言打印杨辉三角
杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。
这是杨辉三角:
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
概述
- 前提:端点的数为1.
- 每个数等于它上方两数之和。
- 每行数字左右对称,由1开始逐渐变大。
- 第n行的数字有n项。
- 第n行数字和为2n-1。
- 每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。
其实用C语言写出杨辉三角也不难,只要去除它左边的空格然后规律就出来了,像这样:
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
下面是笔者写的代码:
/*
*title: 打印杨辉三角
*by: 小林
*/
#include <stdio.h>
#include <stdlib.h>
const int length = 10; // 定义杨辉三角的大小
int main(void)
{
int nums[length][length];
int i, j;
/*计算杨辉三角*/
for(i=0; i<length; i++)
{
nums[i][0] = 1;
nums[i][i] = 1;
for(j=1; j<i; j++)
nums[i][j] = nums[i-1][j-1] + nums[i-1][j];
}
/*打印输出*/
for(i=0; i<length; i++)
{
for(j=0; j<length-i-1; j++)
printf(" ");
for(j=0; j<=i; j++)
printf("%-5d ", nums[i][j]);
putchar('\n');
}
getchar();// 暂停
return EXIT_SUCCESS;
}
编译环境:Dev-C++ 5.11
运行效果如下: