天天看點

C語言算法和三種基本程式結構

做任何事情都有一定的步驟。為解決一個問題而采取的方法和步驟,就稱為算法。

算法是一個基本的概念,但也是一門深奧的學問,小到如何輸出九九乘法表,如何對一組資料進行排序,大到如何控制飛行器的姿态,如何讓無人機壁障。

這裡主要是向大家闡述一下算法的概念,對于初學者,涉及到的算法都很簡單,一般不會成為學習的障礙,我們會在後面的執行個體中逐漸向大家滲透具體的算法。

請大家思考一個問題:如何求1×2×3×4×5的值。

最原始方法:

步驟1:先求1×2,得到結果2。

步驟2:将步驟1得到的乘積2乘以3,得到結果6。

步驟3:将6再乘以4,得24。

步驟4:将24再乘以5,得120。

這樣的算法雖然正确,但太繁。

改進的算法:

S1:使t=1

S2:使i=2

S3:使 t×i,乘積仍然放在在變量t中,可表示為 t×i -> t

S4:使i的值+1,即 i+1 -> i

S5:如果i≤5,傳回重新執行步驟S3以及其後的S4和S5;否則,算法結束。

如果計算100!隻需将“S5:若i≤5”改成“i≤100”即可。

如果改成求1×3×5×7×9×11,算法也隻需做很少的改動:

S1:1 -> t

S2:3 -> i

S3:t×i -> t

S4:i+2 -> i

S5:若i≤11,傳回S3;否則,結束。

該算法不僅正确,而且是計算機較好的算法,因為計算機是高速運算的自動機器,實作循環輕而易舉。

#include <stdio.h>
int main(){
    int i, j;
    for(i=1; i<=9; i++){
        for(j=1; j<=i; j++){
            printf("%-3d ", i*j);  // -3d 表示輸出整數,寬度為3(占3個字元),左對齊
        }
        printf("\n");
    }
    return 0;
}           

三種基本程式結構

幾乎所有程式設計語言,包括C語言,都會有三種基本的程式結構:順序結構、選擇結構和循環結構。

順序結構

順序結構就是一條一條地從上到下執行語句,所有的語句都會被執行到,執行過的語句不會再次執行。

例如,求1+2+3+4+5的和,就可以一個數一個數地依次累加。

選擇結構

選擇結構就是根據條件來判斷執行哪些語句,如果給定的條件成立,就執行相應的語句,如果不成立,就執行另外一些語句。

例如,根據使用者輸入的年齡來輸出不同的内容:

年齡 小于18 你還未成年,應該好好學習
大于等于18,小于等于30 珍惜青春,多做有益的事情
大于30,小于60 社會中堅力量,工作的同時注意身體
大于等于60 請您安享晚年,我們會記得您對社會的貢獻

使用者輸入年齡,程式會做出判斷,根據不同的年齡輸出不同的内容。這四個輸出語句,隻有一個被執行,其他三個被跳過,沒有執行。

循環結構

循環結構就是在達到指定條件前,重複執行某些語句。

例如,上面說到的計算 100! 的值,就會重複執行 S3、S4。

輸出楊輝三角形

#include <stdio.h>
#define MAXN 40
int n;
int a[MAXN][MAXN];
int main(){
    int i, j;
    scanf("%d", &n);
    a[0][0] = 1;
   for (i = 0; i < n; ++i){
       a[i][0] = a[i][i] = 1;
         for (j = 1; j < i; ++j)
            a[i][j] = a[i-1][j-1] + a[i-1][j];
        }
      for (i = 0; i < n; ++i){
           for (j = 0; j <= i; ++j)
	      printf("%d ", a[i][j]);
	      printf("\n");
	}
    return 0;
}
              

繼續閱讀