9.分别用一维数组、二维数组两种不同的方法打印杨辉三角(前20行)
1)一维数组(使用滚动数组,从后往前更新值,边更新边输出!)
代码如下:
//1.一维数组实现 #include#define N 20 int main(){ int arr[N]={1}; int i=0,j=0,k=0; for(i=0;i i;k--){ printf(" "); } for(j=i;j>=0;j--){ //使用滚动数组!从后往前!更新值,边更新边输出 if(j==0||j==i){ arr[j]=1; printf("%d ",arr[j]); } else{ arr[j]=arr[j]+arr[j-1]; //固定算法!! printf("%d ",arr[j]); } } printf("n"); } return 0; }
ps:一维数组实现输出杨辉三角使用的方法相较二维数组更麻烦,希望大家仔细分析代码!
代码实现如下:
2)二维数组
代码如下:
//2.二维数组实现 #include#define N 20 int main(){ int i=0,j=0,k=0; int arr[N][N]={1,1}; for(i=0;i i;k--){ printf(" "); //控制每行前面的空格数(只是为了美观hhh) } for(j=0;j<=i;j++){ if(j==0||j==i){ arr[i][0]=arr[i][j]=1; //先赋值再输出,方便后续操作 printf("%d ",arr[i][j]); //除第一行外,每行第一个和最后一个元素都是1 } else{ arr[i][j]=arr[i-1][j]+arr[i-1][j-1]; printf("%d ",arr[i][j]); } } printf("n"); //控制每输出一行就换行 } return 0; }
ps:大家注意坚持好习惯定义数组大小用宏定义常量给出!(方便对数组大小做任何改变)
代码实现如下:



