楊輝三角 --- C語言程序ide
一、前言函數
最近在逛博客的時候發現一個特別有意思的三角形 而後便編寫了下來。 它呢就是楊輝三角,也做爲個人首篇博客吧spa
二、旅程開始3d
此處爲網上所找到的公式以及各類概述,然而對於來講 然並卵 我並看不懂 😂😂😂 相信各位應該也有和我同樣的人。。。。。code
一、首先呢 咱們先很少說 先打一個簡單的模板上去 (倒三角) blog
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 }
二、咱們搭完一個模板後 咱們是否是須要分析一下公式規律了排序
三、瞭解第二步以後 那咱們就開始搭一個架子了哦 !!!!博客
#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; }
四、咱們能夠從上圖看出只有第一行多了一個1對吧,然而其他的並無多、或者少 只是排版排的不怎麼樣 歪歪扭扭的待會兒我會一一告訴你們 😁 😁 那麼咱們先來解決1一個問題吧(咱們能夠判斷i是否等於1 若是等於就不讓它執行,若是不等於就執行是吧 等等方法形式 對吧!)io
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 }
五、代碼寫到這 形狀就差很少到這了 剩下的就是排版的問題了是吧 !!!event
六、排版嘛 就是空格的多少 百位數的就是一個空格 十位數的就是兩個空格 至因而一位數的話 那麼就是一個空格了哦 怎麼知道是百位或者十位還有個
位 那就取決於它位數的多少了 由於剛開始學 不知道什麼內部的方法或者什麼函數的 而後只能本身想了哦
首先上一個例子吧 而後在展圖
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 }
以上純屬我的淺見,第一次寫博客不懂如何排版,因此如此之醜,見諒