C语言编程题——杨辉三角
概念:
楊輝三角形,又稱賈憲三角形,帕斯卡三角形,是二項式系數在三角形中的一種幾何排列。
?
分析:
我們把上圖三角形左邊的空格去掉后進行分析:
觀察上圖可以發現:
1、上圖三角形的第一列的每個元素都是1;
2、三角形的斜邊每個元素都是1;
3、從第三行,第二列開始,三角形中間的每個元素的值都等于它上面兩個元素的和。
思路:
我們可以把這個楊輝三角看成一個二維數組,而我們只需要打印這個數組的左下方部分 :
1、我們首先創建一個二維數組:
#define ROW 10 #define COL 10 int main() {int arr[ROW][COL] = { 0 };return 0; }2、這個二維數組的第一列的元素都為1,即當COL==0時,arr[ROW][COL] = 1;
3、這個二維數組的對角線的元素都為1,即當ROW == COL時,arr[ROW][COL] = 1;
4、從第三行,第二列開始,數組中間的每個元素的值都等于它上面兩個元素的和:
當(ROW>=2 && COL >=1)時,arr[ROW][COL] = arr[ROW - 1][COL - 1] + arr[ROW - 1][COL];
以上內容轉換為代碼:
#define ROW 10 #define COL 10 int main() {int arr[ROW][COL] = { 0 };int i = 0;int j = 0;//第一列和對角線都為1for (i = 0;i < ROW;i++){for (j = 0;j <= i;j++){if (j == 0)//第一列為1{arr[i][j] = 1;}if (i == j)//對角線為1{arr[i][j] = 1;}//從第三行,第一列的元素開始,中間的每個元素都等于它上面的兩個元素之和if (i >= 2 && j >= 1){arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}}}return 0; }打印:
打印時,只需要再遍歷一次數組左下方的元素即可:
for (i = 0;i < ROW;i++){for (j = 0;j <= i;j++){printf("%-3d ", arr[i][j]);}printf("\n");//打印完一行后換行}效果如下:
如果想打印出剛開始的等腰三角形那種情況,只需要再控制一下每一行前面的空格數量,我們再次觀察一下第一個圖中楊輝三角的前三行:
當行號為3時,第一行有2個空格(ROW-1),第二行有1個空格(ROW-2),第三行有0個空格(ROW-3)
轉換為代碼:
for (i = 0;i < ROW;i++){for (j = 0;j < (ROW - 1) - i;j++)//控制空格數量{printf(" ");}for (j = 0;j <= i;j++){printf("%-3d ", arr[i][j]);}printf("\n");//打印完一行后換行}因為 i 的初始值為0,所以循環條件中需要先給ROW - 1,然后再減 i 。
效果如下:
所有代碼:
最后是整個程序的所有代碼:
#include <stdio.h> #define ROW 10 #define COL 10 int main() {int arr[ROW][COL] = { 0 };int i = 0;int j = 0;//第一列和對角線都為1for (i = 0;i < ROW;i++){for (j = 0;j <= i;j++){if (j == 0)//第一列為1{arr[i][j] = 1;}if (i == j)//對角線為1{arr[i][j] = 1;}//從第三行,第一列的元素開始,中間的每個元素都等于它上面的兩個元素之和if (i >= 2 && j >= 1){arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];}}}for (i = 0;i < ROW;i++){for (j = 0;j < (ROW - 1) - i;j++)//控制空格數量{printf(" ");}for (j = 0;j <= i;j++){printf("%-3d ", arr[i][j]);}printf("\n");//打印完一行后換行}return 0; }總結
以上是生活随笔為你收集整理的C语言编程题——杨辉三角的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tomcat调优方案Maximum nu
- 下一篇: spring security原理