1.當程式遇到分岐的條件,需要作出不同的選擇時,可利用流程控制的功能來達成。
2.流程控制的語法有兩種:if else 與 swich case。
3.
if else
syntax:
if(條件判斷1){
敘述1
}
else if(條件判斷2){
敘述2
}
……
else{
敘述
}
|
e.g.1:
//本程式可以將百分數轉換成對應的A、B、C、D、E等級
int score;
printf("請輸入你的分數:");
scanf("%d",&score);
if(score>90)
printf("A:great!");
else if(score>80)
printf("B:good");
else if(score==77) //注意!判斷是否相等需用"==",不可用"="
printf("Luck no!");
else if(score>70)
printf("C:average");
else if(score>60)
printf("D:not so good");
else
printf("E:WORK HARDER!");
|
e.g.2
//本程式使用巢狀(nested)的if else來判斷使用者的性別與年齡
int age;
char sex;
printf("請輸入性別(男m,女f):");
scanf("%c",&sex);; //讀入一字元,亦可用sex=getchar()
printf("請輸入年齡:");
scanf("%d",&age);
printf("您好,");
if(sex=='m')
{
if(age>=60)
printf("歐吉桑!");
else
printf("黑狗兄!");
}
else
{
if(age>=50)
printf("歐巴桑!");
else
printf("黑貓妹!");
}
|
說明:比較符號與邏輯符號的用法請見下表
符號 |
意義 |
範例 |
> >= |
大於 大於或等於 |
if(a>=1) |
< <= |
小於 小於或等於 |
if(a<10) |
== != |
等於 不等於 |
if(x==y) |
&& |
AND(兩個條件都要成立) |
if(a>=1&&a<=100) |
|| |
OR(兩個條件只要一者成立即可) |
if(a>=1||y<5) |
! |
NOT(true->false,false=>true) |
if(!(a==b)) |
4.
switch case
syntax:
switch(變數){
case 條件1: //敘述1
break;
case 條件2: //敘述2
break;
……………
default: //預設敘述式
}
|
eg:
//本程式可以計算兩個整數的四則運算
int x,y,z;
char op;//op(operator)為運算符號
printf("please input: op x y\n");
scanf("%c%d%d", &op, &x,&y);
switch(op){
case '+':z=x+y;break;
case '-':z=x-y;break;
case '*':z=x*y;break;
case '/':z=x/y;break;
}
printf("%d%c%d=%d\n",x,op,y,z);
|
5.想想看
1.假設公元曆法的閏年規則如下:當年份可被4整除時為閏年,但是被100整除卻不是閏年,但是若又可被400整除時,又可視為閏年。請你設計一程式,可以判斷某一年是否為閏年(leap year)(提示:整除與否可用求餘數符號%來判斷,例100%5=0,5%3=2)。
例:
輸入:2000 輸出:2000 is a leap year
輸入:1997 輸出:1997 is not a leap year
2.請設計一遊戲,可讓電腦自動猜出玩家所想的數字。假設數字為介於1到100之間的整數,而每當電腦猜一次時,玩家必需回應所猜的數字的結果。(答案比較大:輸入'g',小:輸入'l',答對:輸入'c'),直到猜對為止。
例:假設玩家所想數字為66,
電腦猜:50 玩家輸入: g
電腦猜:75 玩家輸入: l
………………
電腦猜:66 玩家輸入: c
ps.本題需配合迴圈來實作
3.某便利商店推出週年慶活動,若同一商品買超過一定數量時便可打折,打折的資訊請參考下表。假設顧客每次只買一種下列商品,請你寫一程式,可輸入購買商品的編號,單價及數量,並計算經折扣後的價格。
編號 |
商品 |
折扣 |
1~2個 |
3~5個 |
5個以上 |
1 |
御飯團 |
95折 |
9折 |
85折 |
2 |
陽光三明治 |
9折 |
85折 |
8折 |
3 |
AB優酪乳 |
9折 |
8折 |
7折 |
範例輸出入:
請輸入商品編號:1
請輸入商品單價:20
請輸入商品數量:3
您好!您購買的商品價格為:54元
4.電阻(register)的數值可由標示在其上的條紋(band)顏色來辨識(請參見下圖)。其規則如下:前兩個條紋為兩位數電阻值,第三個條紋顏色則代表其所乘的10次方值,第四個條紋則為誤差值(本程式可不考慮誤差值)。請你寫一程式,可將某一電阻(已知其電阻值)上的前三個條紋顏色列印出來。
顏色 |
第一、二條紋代表值 |
第三條紋代表值 |
Gold |
- |
10^-1 |
Black |
0 |
10^0=1 |
Brown |
1 |
10^1 |
Red |
2 |
10^2 |
Orange |
3 |
10^3 |
Yellow |
4 |
10^4 |
Green |
5 |
10^5 |
Blue |
6 |
10^6 |
Violet |
7 |
Grey |
8 |
White |
9 |
例:
電阻值10歐姆(10*10^0),其前三個條紋顏色為Brown,Black,Black。
電阻值220歐姆(22*10^1),其前三個條紋顏色為Red,Red,Brown。
電阻值560000歐姆(56*10^4),其前三個條紋顏色為Green,Blue,Yellow。
電阻值為2.4歐姆(24*10^-1),其前三個條紋顏色為Red,Yellow,Gold。
範例輸出入:
Enter register value:220
Red Red Brown