楊輝三角 --- C語言程序
1、前言
最近在逛博客的時候發現一個特別有意思的三角形 然后便編寫了下來。 它呢就是楊輝三角,也作為我的首篇博客吧

2、旅程開始
此處為網上所找到的公式以及各種概述,然而對於來說 然並卵 我並看不懂 😂😂😂 相信各位應該也有和我一樣的人。。。。。

1、首先呢 我們先不多說 先打一個簡單的模板上去 (倒三角)

1 #include <stdio.h> 2 3 int main() 4 { 5 for (int i = 1; i <= 13; i++) 6 { 7 // 輸出倒三角空格 8 for (int j=13; j>i; j--) 9 { 10 printf("--"); 11 } 12 printf("\n"); 13 } 14 15 16 return 0; 17 }
2、我們搭完一個模板后 我們是不是需要分析一下公式規律了

3、了解第二步之后 那我們就開始搭一個架子了哦 !!!!

#include <stdio.h> int main() { int upNumber = 1; //用來記錄上一個數 for (int i = 1; i <= 13; i++) { upNumber = 1; // 輸出倒三角空格 for (int j=13; j>i; j--) { printf(" "); } printf("1"); // 這是輸出每一行的第一個1 for (int j = 1; j <= i - 2; j++) { // 原始數據 printf(" %i",upNumber = (i - j) * upNumber / j); } printf(" 1\n"); // 每一行的最后一個 1 } return 0; }
4、我們可以從上圖看出只有第一行多了一個1對吧,然而其余的並沒有多、或者少 只是排版排的不怎么樣 歪歪扭扭的待會兒我會一一告訴大家 😁 😁 那么我們先來解決1一個問題吧(我們可以判斷i是否等於1 如果等於就不讓它執行,如果不等於就執行是吧 等等方法形式 對吧!)
1 // 判斷是否第一次進來 如果是第一次進來就輸出1就可以了 2 if (i!=1) { 3 printf("1"); // 這是輸出每一行的第一個1 4 for (int j = 1; j <= i - 2; j++) 5 { 6 printf(" %i",upNumber = (i - j) * upNumber / j); 7 } 8 printf(" 1\n"); // 每一行的最后一個 1 9 } 10 else 11 { 12 printf("1\n"); //第一行的1 13 }
5、代碼寫到這 形狀就差不多到這了 剩下的就是排版的問題了是吧 !!!

6、排版嘛 就是空格的多少 百位數的就是一個空格 十位數的就是兩個空格 至於是一位數的話 那么就是一個空格了哦 怎么知道是百位或者十位還有個
位 那就取決於它位數的多少了 因為剛開始學 不知道什么內部的方法或者什么函數的 然后只能自己想了哦
首先上一個例子吧 然后在展圖
int count = 1; //用來計數的多少 默認是1 int sum = 100; //給一個默認的百位數 //給它一個循環 條件為sum大於等於10那么就繼續循環 while(sum>=10) { sum/=10; //除以10 count++; //只要進來一次就加一次 } //如果執行完的話 那么Count的值為3
最后一個忘記寫了 空格為3個 此處為所有代碼
1 #include <stdio.h> 2 3 int main() 4 { 5 int upNumber = 1; //用來記錄上一個數 6 int count = 1; //排序時用來記錄數字的長度 7 int sum =0; //排序時用來計算的變量 8 for (int i = 1; i <= 13; i++) 9 { 10 upNumber = 1; 11 // 輸出倒三角空格 12 for (int j=13; j>i; j--) 13 { 14 printf(" "); 15 } 16 // 判斷是否第一次進來 如果是第一次進來就輸出1就可以了 17 if (i!=1) { 18 printf("1"); // 這是輸出每一行的第一個1 19 for (int j = 1; j <= i - 2; j++) 20 { 21 // -----------------用來排序----------------- 22 sum = upNumber = (i - j) * upNumber / j; 23 while(sum>=10) 24 { 25 sum/=10; 26 count++; 27 } 28 if (count==3) { 29 printf(" %i",upNumber); 30 count=1; 31 }else if (count==2) 32 { 33 printf(" %i",upNumber); 34 count=1; 35 }else 36 { 37 printf(" %i",upNumber); 38 count=1; 39 } 40 // -----------------排序結束並輸出------------ 41 // 原始數據 42 // printf(" %i",upNumber = (i - j) * upNumber / j); 43 } 44 printf(" 1\n"); // 每一行的最后一個 1 45 } 46 else 47 { 48 printf("1\n"); //第一行的1 49 } 50 } 51 return 0; 52 }
以上純屬個人淺見,第一次寫博客不懂如何排版,所以如此之丑,見諒
