Q打印6阶杨辉三角
一:打印对称的杨辉三角
#include <stdio.h> #include <math.h> int c(int x,int y){ //递归函数 int z; if(y==1||y==x)return 1; z=c(x-1,y-1)+c(x-1,y); return z; } int main(int argc, const char * argv[]) { int n; scanf("%d",&n);//输入行数 for (int i=1; i<=n; i++) { for (int j=1; j<2*n-2*i+1; j++)printf(" ");//打印空格 for (int j=1; j<=i; j++)printf("%4d",c(i,j));//输出数字时保留间隙 printf(" "); } return 0; }
二:一般形式的杨辉三角
#include <stdio.h> main() { int i,j,n=0,a[17][17]={0}; while(n<1 || n>16) { printf("请输入杨辉三角形的行数:"); scanf("%d",&n); } for(i=0;i<n;i++) a[i][0]=1; for(i=1;i<n;i++) for(j=1;j<=i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<n;i++) { for(j=0;j<=i;j++) printf("%5d",a[i][j]); printf(" "); } }
上述两种都是C的形式,下面给出C++的形式:
#include <iostream> using namespace std; const int N = 40; int main() { int a[N][N]; int n; cin >> n; for (int i = 0; i < n; i++) { a[i][0] = a[i][i] = 1; for (int j = 1; j < i; j++) {//注意此处的j不能等于i,不然最后结果有错 a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; } } for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { cout << a[i][j] << " "; } cout << endl; } return 0; }