Introduction to the C Programming Language 選擇敘述(if) 若傋註 C: 參見 “C語言教學手冊”,洪維恩著
複習---比較運算子 運算子 符號 名 稱 結合規則 使用語法範例 當a=6,b=2時前述範例的 比較結果 = = 等於 由左而右 6 = = 2 , 0(假) > 大於 a > b 6 > 2 , 1(真) < 小於 a < b 6 < 2 , 0(假) >= 大於或等於 a >= b 6 >= 2 , 1(真) <= 小於或等於 a <= b 6 <= 2 , 0(假) != 不等於 a != b 6 != 2 , 1(真)
if 敘述(if statement) if ( expr ) { statement1; expr } True(真)
if 敘述----範例 範例1:檢查密碼。 printf("請輸入你的密碼 : "); scanf("%d", &passwd); #include<stdio.h> #include<stdlib.h> int main() { int passwd; 宣告ㄧ變數為整數型態 printf("請輸入你的密碼 : "); scanf("%d", &passwd); if (passwd = = 8527) printf(“密碼正確!歡迎使用本系統”); /*密碼正確*/ system() return 0; } Ch1_1_1.c
if 敘述(if-else statements) expr true false Statement2 if-else 敘述的流程圖: if (expr) { Statement1; } else Statement2;
if 敘述----範例 範例1:輸入兩數,比較大小。 printf("請輸入兩個數字 : "); scanf("%d%d", &a,&b); #include<stdio.h> #include<stdlib.h> main() { int a , b; 宣告a,b兩變數為整數型態 printf("請輸入兩個數字 : "); scanf("%d%d", &a,&b); if (a>b) printf("%d is bigger than %d\n", a,b); /*a>b時印出*/ else printf("%d is less than %d\n", a ,b); /*a<=b時印出*/ system("pause"); } Ch1_1_1.c
if 敘述----範例 範例3 流程圖: 從鍵盤輸入一個任意數,判別是偶數還是奇數。 False True 流程圖符號說明 開始 輸入任意數 number rem =number%2 流程圖符號說明 處理符號 流向符號 判斷符號 起始符號/結束符號 輸入/輸出方塊 False rem =1? number為偶數 number為奇數 True 結束
if 敘述----範例 範例3 程式碼:從鍵盤輸入一個任意數,判別是偶數還是奇數。 #include<stdlib.h> #include<stdio.h> #include<stdlib.h> void main() { int number, rem; printf("\1 請輸入ㄧ數字以供測試= => "); scanf("%d",&number); rem = number % 2; if ( rem == 1 ) printf("\2: %d 是奇數\n",number); else printf("\2: %d 是偶數\n",number); system("pause"); } %為取餘數的符號 比較是否相等的符號 Ch1_1_3.c
if 敘述----範例 範例4: 讓使用者輸入 " yes " 或 " no " 的答案. #include <stdio.h> #include <stdlib.h> void main(void) { char ch; int ans; printf("Type yes or no?(y/n)"); ch = getchar(); if ((ch == ‘Y')||(ch =='y')) ans = 1; else if((ch =='N')||(ch =='n')) ans = 0; printf("The value of answer=%d\n",ans); system("pause"); } 宣告變數 ch 為字元型態 宣告變數 ans 為整數型態 讀取螢幕上的字元並存到變數ch中 Ch1_1_4.c
if 敘述----範例 範例5 流程圖: 輸入里程,並計算出車費。 開始 輸入里程數 cost =70 i<=1500? 輸出cost 結束 True False diff =i -1500 diff 為500 的倍數? cost =70+(diff/500)*5 cost =70+(diff/500+1)*5 範例5 流程圖: 輸入里程,並計算出車費。 假設里程在1500公尺以下皆為70元,每超過500公尺加5元,不足500公尺以500公尺計算。
if敘述----範例 範例5 程式碼: (假設里程在1500公尺以下皆為70元,每超過500公尺加5元,不足500公尺以500公尺計算。) #include <stdio.h> #include <stdlib.h> int main(void) { int i,diff,cost; printf("請輸入里程(單位為公尺):"); scanf("%d",&i); if (i<=1500) /*里程數小於等於1500公尺*/ cost=70; else 續~
接續上頁 if (diff%500==0) /*里程數不足500公尺仍以500公尺費率計算*/ cost=70+(diff/500)*5; diff = i-1500; /*計算里程數超過1500公尺的里程費率*/ if (diff%500==0) /*里程數不足500公尺仍以500公尺費率計算*/ cost=70+(diff/500)*5; else cost=70+((diff/500)+1)*5; } printf("總共車資為: %d 元",cost); printf("\n"); system("pause"); return 0; Ch1_1_5.c
if 敘述(else if statements) if ( expr1) { statement1; } else if (expr2) statement2; else if (expr3) statement3; else statement4; staement5; true expr1 Statement1 false true expr2 Statement2 false true Statement3 expr3 false Statement4 Statement5
if 敘述(nested if) ----範例 void main() { char ch , ans; printf("\1是否要繼續安裝本系統 ? (1.yes / 2.no / 3.cancle)\n"); printf("請輸入1或2或3:") ch = getche(); if (ans == '1' ) printf("\2: 歡迎安裝本系統!\n"); else if(ans== '2 ') printf("\1: 結束安裝!\n"); else if(ans== '3') printf(“\1: 取消中…!\n"); else printf("\1:異常中止!請重新安裝!\n"); } 宣告兩變數 ch,ans 為字元型態 直接讀取螢幕上一個字元並存到變數ch中 Ch1_1_6.c
if 敘述(nested if) ----範例 #include<stdio.h> #include<stdlib.h> void main() { int a, b; printf("請輸入一個整數a : "); scanf("%d", &a); if (a<10) printf(" %d 為小於10 的整數\n", a); else if (a>10) printf(" %d 為大於10的正整數\n", a); else printf(" %d 為等於10 的正整數\n", a); system("pause"); } Ch1_1_7.c
if 敘述(nested if) ----練習 1 練習1:輸入學生的成績並依下列的分類方式分級。 00~59:E 級 60~69:D 級 70~79:C 級 80~89:B 級 90~100:A 級 hint:可使用巢狀 if Ch1_1_9.c
if 敘述(nested if) ----(練習 1 )cont. 1 #include<stdio.h> void main() { int score; printf("\1:Please input the score of a student ==> "); scanf("%d",&score); if ( score >= 90 ) printf("\1:The score is in A grade.\n"); else if ( (score >= 80) && (score<=89) ) printf("\1:The score is in B grade.\n"); else if ( (score >= 70) && (score<=79)) printf("\1:The score is in C grade.\n"); else if ( (score >= 60) && (score<=69)) printf("\1:The score is in D grade.\n"); else printf("\1:The score is in E grade.\n"); } 60 70 80 90
簡潔版的if-else---條件運算子 可用「條件」運算子來替代if-else敘述 “?:”---根據條件的成立與否,來決定結果為?或:後的運算式 格式如下: 條件判斷 ? 運算式1 : 運算式2 範例: num1>num2 ? (larger=num1) : (larger=num2) 式1 if(num1>num2) 式2 larger=num1; else larger=num2;
簡潔版的if-else例子(補充) #include<stdio.h> #include<stdlib.h> int main(void) { int n1,n2,larger; printf(“please type two numbers:”); scanf(“%d %d”,&n1,&n2); n1>n2 ? (larger=n1) : (larger=n2); printf(“\nthe larger number is :%d\n”,larger); system(“pause”); return 0; }