1、最标准的杨辉三角
/* 编写程序打印杨辉三角形 1 变形 1 0 0 0 1 1 1 1 0 0 1 2 1 1 2 1 0 。。。。。。 1 3 3 1 思路: 我们定义一个二维数组,所有元素先初始化为0 给数组的第1列和对角线元素赋值为1 其余元素a[i][j]=a[i-1][j-1]+a[i-1][j] 输出这个二维数组的下三角 */ //杨辉三角 如此标准 #include<stdio.h> #include<stdlib.h> #define N 5 int main() { int a[N][N]={0};//全为0 //初始化二维数组 for(int i=0;i<N;i++) { for(int j=0;j<N;j++) { if(j==0 || i==j)//注意是j==0而不是i==0 { a[i][j]=1; //下面两句与上面等价 //a[i][i]=1; //a[i][0]=1; } else { a[i][j]=a[i-1][j-1]+a[i-1][j]; } // printf("%-8d",a[i][j]);//直接边赋值边打印 } //printf("\n"); } for(int i=0;i<N;i++) { printf("%*d",30-i*2,a[i][0]);//打印第一列 ,是*2,这里必须是下面控制字符的一半,才能落在中间的位置,代表每一行第一个数字与行的最前面的间隔字符 //这里的步长必须是下面的一半,才能落在 中间,这里30是一个随机的数字 /* 1 1 0 0 0 1 1 1 1 0 0 1 2 1 1 2 1 0 */ for(int j=1;j<=i;j++)//之所以从j=1开始循环 ,因为第一列已经输出,要提取出来控制每行与行首的间隔 { printf("%4d",a[i][j]);//%4d代表4个字符的宽度 ,如果这里改为%6d,则上面改为30-i*3 } printf("\n"); } //getchar(); system("pause") ; }
二、一般的杨辉三角
/* 编写程序打印杨辉三角形 1 变形 1 0 0 0 1 1 1 1 0 0 1 2 1 1 2 1 0 。。。。。。 1 3 3 1 思路: 我们定义一个二维数组,所有元素先初始化为0 给数组的第1列和对角线元素赋值为1 其余元素a[i][j]=a[i-1][j-1]+a[i-1][j] 输出这个二维数组的下三角 */ #include<stdio.h> int main() { int a[4][4]={0}; printf("全部初始化为0\n"); for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { printf("%-6d",a[i][j]); } printf("\n"); } for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { if(i==j || j==0) { a[i][j]=1; //下面两句与上面等价 //a[i][i]=1; //a[i][0]=1; } else { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } } //输出杨辉三角 for(int i=0;i<4;i++) { for(int j=0;j<=i;j++)//j<4的话结果先前赋值为0的全变为随机的数了 { printf("%-6d",a[i][j]); } printf("\n"); } return 0; }
时间: 2024-10-15 04:17:38