迴路/迴圈結構 (loop)

各種程式語言中一定都會有迴路/迴圈結構,只是迴路/迴圈結構的語法稍有不同而已,C跟C++的迴路/迴圈結構語法有兩種,一種是while,另一種是for。跟if很像,利用括號設定成立的條件,透過大括號設定成立後執行的程式碼。與if不同的是,只要是條件成立,會不斷的循環,所以,如果在迴圈裡沒有改變條件,會形成永不停止的無窮迴圈接下來。

while

int i;
scanf ("%d", &i);
int count = 0;
while (count <= i) {
  printf ("%d\\n", count);
  count ++;
}

以上面的while來說,就是count從0開始,每次執行後count就加1,一直執行到count大於i為止。

如果要讓使用者輸入一個數字,決定接下來輸入幾個數字

#include <stdio.h>
main(){
  int count;
  scanf("%d", &count);
  int i = 0;
  while(i < count){
    int n;
    scanf("%d", &n);
    i++;
  }

}

Untitled

如果要計算平均值,那就是先加總所有的值,再除以數值的數量

#include <stdio.h>
main(){
  int count;
  scanf("%d", &count);
  int i = 0;
  **int sum = 0;**
  while(i< count){
    int n;
    scanf("%d", &n);
    **sum = sum + n;**
    i++;
  }
  printf("%d", **sum/count**);

}

別忘了這樣會取整數,要看到小數點並且只取小數點下三位,就要改成:

#include <stdio.h>
main(){
  int count;
  scanf("%d", &count);
  int i = 0;
  int sum = 0;
  while(i < count){
    int n;
    scanf("%d", &n);
    sum = sum + n;
    i++;
  }
  printf("**%.3f**", **(float)**sum/count);

}

累加的部分可以改成:

//sum = sum + n;
sum += n;

Untitled

另外一種寫法,是當使用者輸入一個特定的數字(例如:0或-1)時就停止輸入,並且計算平均數,一開始會這樣寫,但是,有個邏輯上的問題:

#include <stdio.h>
main(){
  int count = 0;
  int sum = 0;
  int n = 0;
  while(n >= 0){
    scanf("%d", &n);
    sum += n;
    count ++;
  }
  printf("%.3f", (float)sum/count);

}

Untitled

因為把「-1」也算進去,所以,結果就不對了~ 先把scanf()移到最後,雖然還會多算一次,但是我們把count起始值設為「-1」,沖銷多算一次的次數,當然,也可以在計算的時候扣除,解決的方法很多,大家可以想一個自己能記得住的方法。