日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言编程题——杨辉三角

發布時間:2023/12/10 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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语言编程题——杨辉三角的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。