输出以下的杨辉三角形 行数n在程序中输入
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
观察规律: 从第3排起除第一个和最后一个外的其他数都是上一行的数和上一行的数左边的数两者的和。
代码如下:
1 #include <stdio.h> 2 #include <string.h> //使用memset函数需包含此头文件 3 #define maxn 34 //定义常量 4 int arr[maxn][maxn]; //定义二维数组 5 6 int main() 7 { 8 int n, i, j; 9 scanf("%d",&n); 10 memset(arr, 0, sizeof(arr)); //把数组每一项赋值为0 11 for(i=0;i<n;i++) 12 { 13 //循环依次把每一行的第一个和最后一个赋值为1 14 arr[i][0] = 1; 15 arr[i][i] = 1; 16 //循环判断每一行的每一个是不是第一个或最后一个 17 //若是采取以下的算法逻辑: 其值为上面的和上面左边的相加 18 for(j=0;j<=i;j++) 19 { 20 if(j!=0&&i!=j) arr[i][j] = arr[i-1][j-1]+arr[i-1][j]; 21 } 22 } 23 24 for(i=0;i<n;i++) 25 { 26 for(j=0;j<=i;j++) 27 { //避免输出多余的空格 28 if(j!=i) 29 printf("%d ",arr[i][j]); 30 else 31 printf("%d",arr[i][j]); 32 } 33 printf("\n"); //换行 34 } 35 36 return 0; 37 }