杨辉三角
用一维数组或二维数组打印杨辉三角
#include <stdlib.h> #include <math.h> #include <iostream> using namespace std; int a[15][15]; int aa[1024]; void yang_2D(){//二维数组打印杨辉三角 int n; scanf("%d",&n); for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ if(j==1) a[i][j]=1; else a[i][j]=a[i-1][j]+a[i-1][j-1]; } } for(int i=1;i<=n;i++){ for(int k=1;k<=n-i;k++) { printf(" "); } for(int j=1;j<=i;j++){ printf("%d ",a[i][j]); } printf("\n"); } } void yang_1D(){//一维数组打印杨辉三角 int n; int all=0,last=0; scanf("%d",&n); for(int i=1;i<=n;i++){ last=all-1; //last记录第i-1行前面共多少个元素 all+=i-1; //all记录第i行前面共多少个元素 for(int j=1;j<=i;j++){ if(j==1||i==j) aa[all+j]=1; //每行第一个元素和最后一个元素是1 else { aa[all+j]=aa[last+j]+aa[last+j+1]; //每个元素的值等于上一行对应元素和后对应元素后一元素之和 } } } all=0; for(int i=1;i<=n;i++){ all+=i-1; for(int k=1;k<=n-i;k++) printf(" "); for(int j=1;j<=i;j++) printf("%d ",aa[all+j]); printf("\n"); } } int main(){ yang_1D(); yang_2D(); return 0; }