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: //敘述1break; case 條件2: //敘述2break; …………… 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