4. Make
each
day
count
? C 語言並沒有 true 和 false 邏輯文字值,而是使用常數值來判斷條件
運算式是否成立
? 當運算結果的值是非零值 (整數或浮點數都可以),就是 true
? 當運算結果的值是 0,即為 false
條件運算式 3/3
4
5. Make
each
day
count
? AND「且」運算是指連接的左右 2 個運算元都為 true,運算式才為
true;相當於數學集合運算中的交集
? OR「或」運算是指連接的 2 個運算元,任?個為 ture,運算式就為
true;相當於數學集合運算中的聯集
使用邏輯運算子 1/3
A B
A && B
A B
A || B
5
6. Make
each
day
count
? 邏輯運算子 (logical operators) 可以組合多個條件運算式來建立複雜的
條件運算式
使用邏輯運算子 2/3
運算子 說明 運算式範例
! 反條件 !(a > 60)
&& 左右條件要同時成立 (a >= 70) && (a < 80)
|| 左右條件任?個成立 (a < 70) || (a >= 80)
60
70 80
70 80
60
a > 60
!(a > 60)
(a >= 70) && (a < 80)
(a < 70) || (a >= 80)
6
19. Make
each
day
count
int x, y, z;
printf("請輸入3個整數:");
scanf("%d %d %d", &x, &y, &z);
if (x > y){
if (y > z)
printf("數字由小到大為:%d %d %d", z, y, x);
else
if (x > z)
printf("數字由小到大為:%d %d %d", y, z, x);
else
printf("數字由小到大為:%d %d %d", y, x, z);
}else {
if (x > z)
printf("數字由小到大為:%d %d %d", z, x, y);
else
if (y > z)
printf("數字由小到大為:%d %d %d", x, z, y);
else
printf("數字由小到大為:%d %d %d", x, y, z);
}
Lab1 比較大小 2/3
19
20. Make
each
day
count
int x, y, z, t;
printf("請輸入3個整數:");
scanf("%d %d %d", &x, &y, &z);
if (x > y) { //交換x,y的值
t = x;
x = y;
y = t;
}
if (x > z){ //交換x,z的值
t = z;
z = x;
x = t;
}
if (y > z){ //交換z,y的值
t = y;
y = z;
z = t;
}
printf("數字由小到大為: %d %d %dn", x, y, z);
Lab1 比較大小 3/3
20
21. Make
each
day
count
? switch敘述框架
switch (整數運算式){
case 常數值1: //如果運算式值等於常數值1,執行break敘述前的程式碼
程式區塊1;
break;
case 常數值2: //如果運算式值等於常數值2,執行break敘述前的程式碼
程式區塊2;
break;
...
case 常數值n: //如果運算式值等於常數值n,執行break敘述前的程式碼
程式區塊n;
break;
default: //所有case都不符合,執行預設程式碼
預設程式區塊;
}
switch多選一條件敘述 1/4
21
22. Make
each
day
count
? switch 多選?條件敘述之每?個 case 比對值相當於進行「==」運算子,
?旦整數運算式結果與 case 條件比對相同,就會執行對應的程式區塊
? 每個程式區塊最後應加上 break 敘述,如果沒有 break 敘述就會繼續執行
下?個 case 之程式區塊
switch多選一條件敘述 2/4
case 比對1
default 其它敘述
程式區塊1
true
false
程式區塊2
case 比對2
switch (整數運算式)
case 比對n
true
false
non break
程式區塊n
true
non break
non break
break
break
break
結束
false
22
23. Make
each
day
count
int score;
char grade;
printf("輸入成績:");
scanf("%d", &score);
switch (score/10){
case 10:
case 9: grade = 'A';
break;
case 8: grade = 'B';
break;
case 7: grade = 'C';
break;
case 6: grade = 'D';
break;
default:
grade = 'F';
}
printf("成績等第%cn", grade);
switch多選一條件敘述 3/4
23
24. Make
each
day
count
? gcc 的編譯器還允許 case 比對的是?個數值範圍
int score;
char grade;
printf("輸入成績:");
scanf("%d", &score);
switch (score){
case 90 … 100: grade = 'A';
break;
case 80 … 89: grade = 'B';
break;
case 70 … 79: grade = 'C';
break;
case 60 … 69: grade = 'D';
break;
default:
grade = 'F';
}
printf("成績等第%cn", grade);
switch多選一條件敘述 4/4
24
25. Make
each
day
count
? (條件運算式)? 程式敘述1 : 程式敘述2;
? 程式敘述1或程式敘述2可以使用嵌套作業
int score;
char grade;
printf("輸入成績:");
scanf("%d", &score);
grade=(score>=90)? 'A':(score>=80? 'B':(score>=70? 'C':(score>=60? 'D':'F')));
printf("成績等第%cn", grade);
? :條件運算子嵌套作業
25