C++完成一个杨辉三角的存储打印

C++完成一个杨辉三角的存储打印(是正三角形,不是直角,一在中间,类似金字塔)

#include <stdio.h>

#include <stdlib.h>


#define N 10  // 打印杨辉三角的行数

#define M 4   // 每个数组打印的字符数

int a[N][N] = {0};


void GetTriangle(int n) {

int i;


if (n==0) {

a[n][0]=1;

} else if (n == 1) {

GetTriangle(n-1);

a[n][0]=1;

a[n][1]=1;

} else {

GetTriangle(n-1);


a[n][0]=1;

a[n][n]=1;

for(i=1; i<n; i++) {

a[n][i]=a[n-1][i-1] + a[n-1][i];

}

}

}


int main()

{

int i,j,k;

int max_len=0;

int len,start;


    GetTriangle(N);


// 假定每个数字,使用4个字符宽度来打印

max_len = N*M;


// N行,有N个数据,比如第10行有10个数据

for(i=0; i<N; i++) {

start = (max_len - (i+1)*M)/2;

for(j=0; j<start; j++) {

printf(" "); //打印前置空格

}

for(k=0;k<=i;k++) {

printf("%3d ", a[i][k]);

}

printf("\n");

}


getchar();


}

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答