楊輝三角 --- C語言程序


楊輝三角 ---  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 }
View Code

 


 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;
}
View Code

 


 

 

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 }
View Code

 

 

以上純屬個人淺見,第一次寫博客不懂如何排版,所以如此之丑,見諒

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM