一维数组实现: 代码: #include <stdio.h> #include <stdlib.h> int main() { int row,i,size=0,j=3; printf("Please enter rows(Only integer allowed): "); if(!scanf("%d", &row)) { printf("Illegal character,about to exit."); return -1; } for(i=1; i<=row; i++) { size += i; } int arr[size]; arr[0] = 1; arr[1] = 1; arr[2] = 1; for(i=2; i<row; i++) { int n = j; for(;j<=n+i; j++) { if(j==n || j==(n+i)) arr[j] = 1; else arr[j] = arr[j-i-1] + arr[j-i]; } } j=1; row=1; for(i=0;i<size;i++) { printf("%d ",arr[i]); if(j % row == 0) { printf("/n"); row++; j=row; } j++; } return 0; } 运行结果: Please enter rows(Only integer allowed): 15 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1 1 11 55 165 330 462 462 330 165 55 11 1 1 12 66 220 495 792 924 792 495 220 66 12 1 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1 1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1 Process returned 0 (0x0) execution time : 1.572 s 二维数组实现: 代码: #include <stdio.h> #include <stdlib.h> int main() { int row,i,j,n; printf("Please enter a number of rows(Note: only integer allowed): "); n = scanf("%d", &row); //Check if the number is legal. if(0 == n) { printf("Illegal charactor!Program's about to exit!"); return 1; } int arr[row][row]; for(i=0; i<row; i++) for(j=0; j<row; j++) { if(i == j || 0 == j) arr[i][j] = 1; else arr[i][j] = 0; } for(i=2; i<row; i++) for(j=1; j<i; j++) { arr[i][j] = arr[i-1][j-1] + arr[i-1][j]; } for(i=0; i<row; i++) { for(n=(row-i-1); n>0; n--) printf(" "); for(j=0; j<row; j++) { if(arr[i][j] != 0) { printf(" %d ",arr[i][j]); } } printf("/n"); } return 0; } 运行结果: Please enter a number of rows(Note: only integer allowed): 15 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1 1 11 55 165 330 462 462 330 165 55 11 1 1 12 66 220 495 792 924 792 495 220 66 12 1 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1 1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1 Process returned 0 (0x0) execution time : 1.685 s