# 承上章:for迴圈、比較跟邏輯運算子 - 設計程式的步驟 - 以小遊戲為例 - 先訂出目標跟功能 - const常數 ```C= const int anwser=6; ``` - 相對於變數 - 優點 - 保險,不會被動到 - 固定住節省CPU資源 - 這個好習慣 - 延伸閱讀:前置處理器? - 多重條件(巢狀)新手不要常用 - 我如何同時有兩個條件 ```c= else if (guess <=9 && guess >= 7){ ... } ``` - 正確製作迴圈程式 - 先做好外圍最後才輸入{}內的內容 - 迴圈式:loop 重複執行一段程式的語法 - C語言中又有兩種迴圈(JAVA三種) - **計次型** - 可以明顯算出重複次數的迴圈 ```c= for(計次的起點;繼續重複的條件;計次變化的方式){ 要重複的程式碼 } ``` 使用場合:假設我要印ABC 10次 **初學者寫法** ```C= puts("ABC"); puts("ABC"); puts("ABC"); puts("ABC"); puts("ABC"); puts("ABC"); puts("ABC"); puts("ABC"); puts("ABC"); puts("ABC"); ``` **記次寫法** 做一個+1計數器吧 ```c= int counter; for( counter = 1 ; counter <= 10 ; counter = counter + 1 ){ /*code here*/ } ``` - `=`是賦值 - 改`counter <= 數字`就能指定次數 - 要小心死亡迴圈 如`count - 1` - 電腦會當機嗎 - int的範圍:-2,147,483,648 至2,147,483,647 - PS:小算盤現在有給程式設計師的功能 - 溢位 - 不要做不會開始的迴圈例如`counter=11` - 還能印出次數 在code here寫入: ```c= printf("我印了%d次", counter); ``` - `gcc -c *.c -std=c99`可以跟換標準 - 有些小差異,例如在上方`for(`後方加上`int`的可行性 - `windows.h`中`Sleep()`語法可以指定停止秒數 - 注意單位為毫秒,填入1000為1秒 - Mac的標頭檔用`unistd.h`Unix標準標頭檔,單位為秒數 - 由於gcc移植自Unix,所以Windows也能用 - 一種寫法 ```c= int anwser=0;... ``` ```c= for(...){ answer = answer + counter; } printf("%d",answer); ``` 老師的範例 ```c= #include <stdio.h> #include <windows.h> int main(){ int counter; int answer = 0; for(counter = 1 ; counter <= 10 ; counter = counter + 1){ printf("----現在進行第%d圈----\n", counter); printf("計算前:answer=%d\n", answer); answer = answer + counter; printf("計算後:answer=%d\n", answer); printf("----第%d圈執行結束----\n\n", counter); Sleep(5000); } printf("1+2+3+.....+10=%d\n", answer); puts("--------OVER--------"); return 0; } ``` 題目:改幾個地方變成0~100中3的倍數相加 解答:改成`count+3` (這題答案是1683) ```C= #include <stdio.h> int main(){ int counter; int answer = 0; for(counter = 0 ; counter < 100 ; counter = counter + 3){ answer = answer + counter; } printf("3+6+9.....+99=%d\n", answer); return 0; } ``` 更好的寫法(正統) ```c= for(counter = 0 ; counter < 100 ; ++counter){ //counter = counter + 1 ===> counter++(跟++counter功能一樣) if(counter % 3 == 0){ answer += counter; // answer = answer + counter } ``` - 疑惑 - counter++意思是同counter+1吧 - 但是被下方if迴圈作用掉了 - 當counter是3的倍數時才會加,反之會被忽略