题目描述
KiKi知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他解答。杨辉三角,本质上是二项式(a+b)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1, 一个数也为1;每个数等于它左上方和上方的两数之和。
输入描述:
第一行包含一个整数数n。 (1≤n≤30)
输出描述:
包含n行,为杨辉三角的前n行,每个数输出域宽为5。
代码
#include <iostream> #include <iomanip> using namespace std; /*杨辉三角最终显示效果是一个等腰三角形,两个最外边都是1 杨辉三角的根本在于,每个数等于它上方两数之和 */ int main(){ int n;//变量n在此处起到了限制输出行数的作用,可优化成用户输入 cin>>n; int i,j,a[n][n]; //使第一列和对角线元素的值为1 for (i=0;i<n;i++){ //前两行全为1,拿出来单独处理 a[i][i]=1;//使最右侧边全为1 a[i][0]=1;//使最左侧边全为1 } //从第三行开始处理 for (i=2;i<n;i++) //三行开始出现变化 for (j=1;j<=i-1;j++) //j始终慢i一步 a[i][j]=a[i-1][j-1]+a[i-1][j];//每个数等于它上方两数之和,如a32=a21+a22 //输出数组各元素的值 for (i=0;i<n;i++){ //从第一行开始 for (j=0;j<=i;j++) //利用j将每一行的数据全部输出 cout<<setw(5)<<a[i][j]; //在C++中,setw(int n)用来控制输出间隔,这里是指前元素末尾与后元素末尾之间有个5空格位 cout<<endl; } //cout<<endl; return 0; }