- 註冊時間
- 2006-10-8
- 最後登錄
- 2019-6-20
- 主題
- 查看
- 積分
- 1306
- 閱讀權限
- 110
- 文章
- 1393
- 相冊
- 0
- 日誌
- 1
![Rank: 11](static/image/common/star_level3.gif) ![Rank: 11](static/image/common/star_level3.gif) ![Rank: 11](static/image/common/star_level2.gif) ![Rank: 11](static/image/common/star_level1.gif)
狀態︰
離線
|
決策結構(Decision Structures)
1. if-else statement
if (運算式) {
Statement1;
} else {
Statement2;
}
說明:
主要先判斷運算式的結果,如果運算式的結果不是0,則執行敘述1,否則執行敘述2。else部分可以省略。else後面也可加上if敘述。
輸入兩個整數,比較其大小
#include <stdio.h>
int main() {
int a, b;
// 提示使用者輸入資料
printf("Please input two integers:");
scanf("%d%d", &a, &b);
if (a > b) {
printf("%d > %d\n", a, b);
} else if (a < b) {
printf("%d < %d\n", a, b);
} else {
printf("%d == %d\n", a, b);
}
}
檢查使用者輸入的數字是否為0
#include <stdio.h>
int main() {
int num = 100;
printf("Please input an integer:"); // 提示使用者輸入資料
scanf("%d", &num); // 輸入數字到num變數
if (num == 0) {
printf("您輸入的數字是0\n");
} else {
printf("您輸入的數字不是0\n");
}
}
判斷西元年份是否為閏年
判斷是否為閏年的流程圖如下:
依照上述流程圖,可寫出如下的程式
#include <stdio.h>
int main() {
int year;
printf("Please input an the year:"); // 提示使用者輸入資料
scanf("%d", &year); // 輸入年份year
if (year%4 == 0) {
if (year%100 == 0) {
if (year%400 == 0) {
printf("%d是閏年\n", year);
} else {
printf("%d不是閏年\n", year);
}
} else {
printf("%d是閏年\n", year);
}
} else {
printf("%d不是閏年\n", year);
}
}
如果我們把所有可得到閏年的路徑,集合在一起,則更簡潔的寫法是
#include <stdio.h>
int main() {
int year;
printf("Please input the year:"); // 提示使用者輸入資料
scanf("%d", &year); // 輸入年份year
if (year%400 == 0 || year%4 == 0 && year%100 != 0) {
printf("%d是閏年\n", year);
} else {
printf("%d不是閏年\n", year);
}
}
如何求一元二次方程式的解
我們可以畫出如下的流程圖,如何按照此流程圖寫出程式?
請各位讀者自己寫寫看了
2. switch statement
switch (運算式) {
case 常數1:
statement1;
break;
case 常數2:
statement2;
break;
default:
statement;
}
說明:
switch是一個處理多重判斷的敘述,經由運算式所產生的結果,分別對應到符合的case,並執行底下的statement。假設沒有相符合的case,則會執行default case的敘述;default case敘述可有可無,假如運算式產生的結果沒有相符合的case,則不會產生任何結果。要特別注意的是, ":"這個符號在C語言裡用來表示標籤,所謂標籤不會產生任何程式碼,只是用來告訴compiler某一行程式的位置。因此下面的範例中若把break指令都拿掉,那你會發覺當intnum的值是1的時候,三個printf都會被執行到。這點在寫程式時要特別小心。
範例:
switch (intnum) {
case 1:
printf("The number is one");
break;
case 2:
printf("The number is two");
break;
default:
printf("The number is not one or two");
}
3. while statement
表示法:
while (運算式) {
statements;
}
說明:
若運算式的結果不是0,則會執行底下的statements,然後再回頭判斷運算式的結果;此動作會一直重覆執行,直到運算式結果為0時,則會停止執行。
範例:
int i = 0;
while (i <= 5) {
printf("The Number is %d\n", i);
i++;
}
4. for statement
表示法:
for (運算式1; 運算式2; 運算式3) {
statements;
}
說明:
運算式1:初始值設定運算式
運算式2:比較運算式
運算式3:增加或減少運算式
範例:
int i;
for (i = 10; i <= 100; i += 10) {
printf("%d divided by 10 equals %d \n", i, i/10);
}
5. do while statement
表示法:
do {
statements;
} while (運算式);
說明:
此迴圈為先執行statements,接著判斷運算式的結果,假如其值不是0,則再執行statements;反之,則停止執行。
範例:
int i = 1;
do {
printf("%d * 5 = %d", i, i * 5);
i++;
} while (i <= 5);
6. break
說明:
break的功能是跳離目前所在的迴圈或switch區塊的動作,但並不會直接跳離到最外部層級。此用法在於for、while、do及switch完全相同。
範例:
int i;
for (i = 1; i <= 100; i++) {
if (i == 13) {
break;
}
printf("The number is %d\n", i);
}
7. continue
說明:
表示當遇到continue敘述時,for、while或do迴圈停止這一次循環,接著下一次的循環。但switch不適合continue此項敘述。
範例:
int i;
for (i = 1; i <= 100; i++) {
if (i % 2 != 0) {
continue; // 跳過所有奇數
}
printf("The even number is %d", i);
}
8. goto
說明:
跳到某個標籤後的指令。在程式中,goto可改變程式執行時的順序及影響整體程式的結構。因此,程式當中盡量少用goto敘述,以免使整個程式執行複雜化。
範例:
int i = 1;
if (i == 1) {
goto one;
} else {
goto another;
}
one:
printf("Here is one");
another:
printf("Here is another");
請注意上述程式,如果i==1,則兩個printf都會執行到。
|
|