# 承上章: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的倍數時才會加,反之會被忽略