C语言练习---杨辉三角
目錄
1. 楊輝三角認識
2.? 楊輝三角基本實現代碼
① 打印10行楊輝三角
② 自定義打印0~20行楊輝三角
3. 注意的地方
① 二維數組VS2019中定義
② 空格的打印
備注:此文所有程序均在Visual Stdio 2019 IDE中完成
1. 楊輝三角認識
????????楊輝三角,是二次項系數在三角形中的一種幾何排列,中國南宋數學家楊輝1261年所著的《詳解九章算法》一書中出現。?
2.? 楊輝三角基本實現代碼
① 打印10行楊輝三角
代碼如下:
#include<stdio.h> #define line_total 10 //打印10行 int main(void) {int h = 0, l = 0; //定義行、列int array[line_total][line_total] = {0}; //定義一個二維數組存放每一行數據,//int array[h][l]; VS中錯誤寫法int n = 0; //定義一個int類型變量實現打印空格//楊輝三角取10行for (h = 0; h < line_total; h++) //行:0 1 2 3 4 5 6 7 8 9{//打印空格for ( n = h ; n < line_total; n++ ) //空格:10 9 8 7 6 5 4 3 2 1{printf(" ");}//取每一行數據for (l = 0; l <= h; l++) //0 1 2 3 4 5 6 7 8 9共十行(若為“l < h”的話就為1到9,9行){if (l == h || l == 0){array[h][l] = 1; //外圍值取1}else{array[h][l] = array[h - 1][l - 1] + array[h - 1][l];//取每一行的各個數}printf("%-4d", array[h][l]); //打印楊輝三角(%3d,表示每個字符占用3個字符寬度,右邊開始放) }printf("\n"); //打印換行}return 0; }????????思路就是定義行列,定義一個二維數組存放行列,第一個for循環實現打印每一行。嵌套一個for循環打印空格最終形成等腰楊輝三角,再嵌套一個for循環求出該行每一個值,每一行的值求完以后換行,進行新的一輪打印。最終完成打印10行等腰楊輝三角。
② 自定義打印0~20行楊輝三角
利用for內外循環、二維數組打印空格及每行每列。利用while多次打印。
?
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //system("pause");頭函數 int main(void) {while (1) //多次打印{int H, L, k, n=20; //定義行、列、空格、總行數int array[21][21] = { 0 }; //定義二維數組,裝每行各個數printf("請輸入楊輝三角行數1~20:\n");printf("輸入0退出!\n");scanf("%d", &n);if (n == 0) //判斷輸入為“0”退出打印break;while (n > 20 || n < 1) //剔除輸入的不符條件的數據{printf("請輸入楊輝三角行數1~20:\n");printf("輸入0退出!");scanf("%d", &n);}for (H = 1; H <= n; H++) //外循環打印每一行{k = H; //k賦值H,為了不影響Hfor (k; k <= n; k++) //打印空格,形成等腰三角形{printf(" "); //這里有三個空格 }for (L = 1; L <= H; L++) //內循環打印每一列{if (L == H || L == 1)array[H][L] = 1; //外圍賦值為1elsearray[H][L] = array[H - 1][L - 1] + array[H - 1][L];printf("%6d", array[H][L]); //打印楊輝三角行和列}printf("\n");}}printf("\n\n");system("pause");return 0; }3. 注意的地方
① 二維數組VS2019中定義
首先看一看錯誤寫法:
?int array[H][L];?//錯誤寫法,VS中定義數組必須是常量表達式
編譯錯誤提示:
????????表達式必須含有常量值,即常量表達式。
????????不能分配大小為0的數組。
????????“array” 缺少下標,“array” 未知大小。
正確寫法應為(部分代碼):
#define line_total 10 //打印10行,楊輝三角 int main(void) {int H, L;????????//定義行、列int array[line_total][line_total] = { 0 }; //定義二維數組,賦值為0解析:
????????定義二維數組時,可以把二維數組最大的需求加1(或者更多),作為二維數組下標。如,打印20行楊輝三角,定義二維數組可以把下標都寫成21。右值可以定義為0,或者其他。比如說:int array[6] = {0,1}; 即第0項,第1項定義為0和1,其他項定義為0。
?int H, L, k, n=20;?????????? //定義行、列、空格、總行數
int array[21][21] = { 0 }; //定義二維數組,先賦值為0
printf("請輸入楊輝三角行數1~20:\n");
printf("輸入0退出!\n");
scanf("%d", &n);
② 空格的打印
for (H = 1; H <= n; H++)??//外循環打印每一行 {k = H; ?//k賦值H,為了不影響Hfor (k; k <= n; k++)??//打印每一行空格,形成等腰三角形{printf(" ? ");??//這里有三個空格} }空格打印雖然比較隨意,但是起碼得看起來規整美觀?? ? ? ??。
① 看起來得美觀。?
② “%6d”每個字符占6個符號位,從左寫入。
③ 上面第三條語句?printf(" ? ");,里面空格符號數量與%6d有關(6?2=3,兩倍的關系)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
總結
以上是生活随笔為你收集整理的C语言练习---杨辉三角的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 西安研究所名录
- 下一篇: PS四种扁平化设计风格-网摘