杨辉三角
1.问题描述
编程打印直角杨辉三角形
2.问题分析
主要就是用到了二维数组的输入及输出、循环嵌套与二维数组的结合、输出的格式控制,杨辉三角符合的规律:
每个数等于它上方两数之和。
每行数字左右对称,由1开始逐渐变大。
第n行的数字有n项。
第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。
3.算法设计
先根据设定的行数定义一个二维数组,然后使用一个双层循环,外层循环的因子为杨辉三角的行数,内层循环用来将杨辉三角每行的数字存入数组。每行第一个数和最后一个数都是1,中间的数字等于它上方两数之和。
最后再通过两层循环将二维数组中的数字打印。
4.程序
#include <iostream> using namespace std; #define LINE_MAXIMUM 10 //行数 int main() { int i = 0, j = 0; int array[LINE_MAXIMUM][LINE_MAXIMUM] = { 0 }; /* 填充二维数组 */ for (i = 0; i < LINE_MAXIMUM; i++) //行数 { for (j = 0; j <= i; j++) //每行的列数(第n行的数字有n项) { if (j == 0 || j == i) //每行第一列和最后一列为1 array[i][j] = 1; else //每个数等于它上方两数之和 array[i][j] = array[i - 1][j - 1]\ + array[i - 1][j]; } } /* 打印杨辉三角(直角) */ for (i = 0; i < LINE_MAXIMUM; i++) { for (j = 0; j <= i; j++) cout<<array[i][j]; cout << endl; } return 0; }