C++练习01 ---- 打印杨辉三角
百度百科列出的一些性质:
·前提:端点的数为1.
·1、每个数等于它上方两数之和。
·2、每行数字左右对称,由1开始逐渐变大。
·3、第n行的数字有n项。
·4、第n行数字和为2^(n-1)。(2的(n-1)次方)
·5、第n行的第m个数和第n-m+1个数相等,即C(n-1,m-1)=C(n-1,n-m),这是组合数性质
【思路一】
用队列实现
【思路二】
用二维数组实现
代码:
1 /** 2 * 输出杨辉三角 3 * @author CocoonFan 4 * @date 2/27/2013 5 */ 6 7 #include <iostream> 8 #include <iomanip> 9 using namespace std; 10 11 int main() 12 { 13 int n; 14 while(cout << "要打印多少行? ",cin >> n && n > 0) 15 { 16 int i,j,a[n][n]; 17 18 //第一步:初始化 19 for (i=0;i < n;i++) 20 { 21 a[i][i] = 1; 22 a[i][0] = 1; 23 } 24 25 //第二步:循环相加 26 for (i = 2;i < n;i++) 27 for (j=1;j<=i-1;j++) 28 a[i][j]=a[i-1][j-1]+a[i-1][j]; 29 30 //输出 31 for (i=0;i<n;i++) 32 { 33 for (j=0;j<=i;j++) 34 cout<<setw(4)<<a[i][j]<<" "; 35 cout<<endl; 36 } 37 cout<<endl; 38 39 } 40 41 return 0; 42 }
运行结果: