




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Chap4 選擇結構程序設計本章重點熟練使用if、switch語句了解break語句在switch語句中的使用本章難點if語句嵌套與結合原則多分支條件的確定switch與break語句的配合Chap4 選擇結構程序設計if語句【1】if條件:條件可為常量、變量、表達式if 3種形式【2】單分支算法求最大值:求2數(shù)最大、求3數(shù)最大、求10數(shù)最大選擇法排序:2數(shù)排序、3數(shù)排序、10數(shù)排序【3】雙分支語句體:求和、求積條件運算符與條件表達式及其應用【4】多分支根據(jù)成績輸出對應的等級【5】if嵌套【6】switch語句break語句:退出switch程序舉例【1】if條件基本形式if(條件) ;不要誤
2、寫成if(條件); /無語法錯誤;條件判斷常量if(0) /工程應用,調試if(1) /工程應用,調試if(1.2) /無實際應用if(a) /無實際應用變量if(n) /if(n!=0)表達式if(n%2) /算術 n為奇數(shù)if(ab) /關系if(a=1) /不要誤寫成if(a=1)if(!n)/邏輯 等價if(n=0)if(P1&0 x01)=0 x00)/位運算等【1】if條件注釋有效或無效int main(void)int a,b,t;a=12;b=23;/*t=a;a=b;b=t;*/printf(%dt%dn,a,b);return(0);if(0) /注釋無效int main(
3、void)int a,b,t;a=12;b=23;if(0)t=a;a=b;b=t;printf(%dt%dn,a,b);return(0);if(1) /注釋解開【2】單分支【例1】求a,b兩數(shù)中的大數(shù)max=a;if(maxb)max=b;if(maxb) max=b;/單語句可寫在一行上【例2】求a,b,c三數(shù)中的大數(shù)max=a;if(maxb)max=b;if(maxc)max=c;【例3】已知,有一數(shù)組#define N 10int aN=67,89,65,43,79,90,32,1,98,66,max; 如何求該數(shù)組中的最大數(shù)?!求最大數(shù)算法:先假定第1數(shù)為最大(把第1數(shù)賦給max
4、);然后把后面的數(shù)依次與max進行比較,若有比max大的則覆蓋max,否則不處理。【2】單分支【例3】求10個數(shù)中的最大數(shù)#include stdio.h#define N 10int main(void)int aN=67,89,65,43,79,90,32,1,98,66,max;int i;max=a0;/先假定第1個數(shù)最大for(i=1;iN;i+)if(maxb) t=a;a=b;b=t;/正確若忘記if(ab)t=a;a=b;b=t;則對齊格式不規(guī)范規(guī)范的對齊格式if(ab)t=a;a=b;b=t;【2】單分支【例4】對a,b,c三數(shù)排序(升序)如圖算法分析,排序方法之一選擇法排序
5、。1、首先在a,b,c 3數(shù)中選擇1個最小數(shù)存于a中,具體方法(1)a,b比,若b比a小則交換;(2)a,c比,若c比a小則交換;2、然后排除最小數(shù)a,在b,c 2數(shù)中選擇1次小數(shù)放在b中b,c比,若c比b小則交換;因此3數(shù)排序需比3次/3數(shù)中選擇最小數(shù)if(ab)if(ac)/2數(shù)中選擇次小數(shù)if(bb)max=a;elsemax=b;簡寫形式1簡寫形式2不規(guī)范格式規(guī)范格式【3】雙分支【程序1】#include stdio.hvoid main(void)int a,b;scanf(%d%d,&a,&b);if(ab) printf(%dn,a);else printf(%dn,b); 【程
6、序2】#include stdio.hvoid main(void)int a,b,c;scanf(%d%d,&a,&b);if(ab) c=a;else c=b;printf(%dn,c); 指出以上兩程序的不同,你更喜歡用哪個?【3】雙分支若A、B語句體有多條語句,則應各加一對,構成復合語句if(條件)/語句體Aelse/語句體B【例2】試分析以下語句功能#include stdio.hint main(void)int i,s,flag;printf(請輸入數(shù)據(jù)0/1:n);scanf(%d,&flag);if(flag=0)i=1;s=0;while(i=10)s+=i;i+;else
7、i=1;s=1;while(ib) max=a; else max=b;/可改為:max=ab?a:b;printf(”%d”,ab?a:b);/直接輸出條件表達式值條件運算符的執(zhí)行順序條件運算符優(yōu)先級:優(yōu)先于賦值運算符,而低于算術運算符和關系運算符max=ab?a:b 相當于 max=(ab)?a:b)條件運算符結合方向:自右向左ab?a:cd?c:d 相當于 ab?a:(cd?c:d)/實際意義不大【3】雙分支-條件表達式【例3】若有int a,b,c,max;試寫出求3數(shù)最大的條件表達式。max=(ab?a:b)c?(ab?a:b):c;max=(max=ab?a:b)c?max:c);
8、【3】雙分支-條件表達式【例4】試分析如下語句功能ch=(ch=A&ch=a&ch=z) ?ch-32 : ch;#define ON_BOTTOM 1#define OPEN 0#define CLOSE 1Key0:微動按鍵輸入D0 :發(fā)光二極管輸出 D0=(Key0=ON_BOTTOM)?OPEN:CLOSE;【4】多分支多分支選擇語句#include stdio.hvoid main(void)if(條件1)/語句體Aelse if(條件2)/語句體Belse if(條件3)/語句體Celse/語句體D 語句(體)1執(zhí)行的條件是:條件1成立語句(體)2執(zhí)行的條件是:條件1不成立且條件2
9、成立-選擇結構示例【例】從鍵盤輸入一個百分制成績(score),試輸出其等級,score與等級對應如下:90100:A8089 :B7079 :C6069 :D=90&score=80&score=70&score=60&score70)printf(grade=%cn,D);if(score60)printf(grade=%cn,E); 特點:每個條件都判斷,執(zhí)行效率偏低選擇結構示例2、雙分支:關鍵是歸納void main(void)int score;char grade;printf(請輸入成績score:);scanf(%d,&score);if(score=90&score=80&s
10、core=70&score=60&score=90&score=80&score=70&score=60&score=90&score=80)printf(grade=%cn,B);else if(score=70)printf(grade=%cn,C);else if(score=60)printf(grade=%cn,D);elseprintf(grade=%cn,E); 【4】多分支指出程序中的不足2#include stdio.hvoid main(void)int score;printf(請輸入成績score:n);scanf(%d,&score);if(score=90&scor
11、e=80)printf(grade=%cn,B);else if(score=70)printf(grade=%cn,C);else if(score=60)printf(grade=%cn,D);elseprintf(grade=%cn,E); 完善的程序#include stdio.hvoid main(void)int score;char grade;printf(請輸入成績score:n);scanf(%d,&score);if(score=90&score=80)grade=B;else if(score=70)grade=C;else if(score=60)grade=D;el
12、segrade=E;printf(grade=%c,grade); 【4】多分支【5】if語句嵌套if() if() 語句1 else 語句2else if() 語句3 else 語句4if語句嵌套:if語句中又包含一個或多個if語句;注意if與else的配對關系:從最內層開始,else總是與它上面最近的而且是未曾配對的if配對。注意if語句嵌套的書寫格式:盡量對齊:縮進方式盡量使用括號if() if() 語句1 else if() 語句2 else 語句3if() if() 語句1 else if() 語句2 else 語句3【5】if語句嵌套/No1if(x=0)if(x0) y=1;el
13、se y=0;else y=-1;【P100例4.5】if語句嵌套示例,下面C程序能否實現(xiàn)如圖分段函數(shù)功能?/No3y=-1;if(x!=0)if(x0)y=1;else y=0;/No4y=0;if(x=0)if(x0) y=1;else y=-1;【6】switch語句如果if語句分支會引起程序冗長、降低“可讀性”。C語言的switch語句解決該問題。switch是一種多分支選擇結構語句case :表達式分支值break:break表示退出switchdefault:除所有case外的其它情況switch(表達式)case 常量表達式1:語句體1 break;case 常量表達式2:語句體
14、2 break;/case 常量表達式n:語句體n break;default:語句體n+1/break;【6】switch語句【例】從鍵盤輸入一個百分制成績(score),試輸出其等級(grade),score與grade對應如下:90100:A8089 :B7079 :C6069 :D60 :E程序源碼#include stdio.hvoid main(void)int score;char grade;scanf(%d,&score);switch(score)case 100:grade=A;break;case 99 :grade=A;break;/-case 90 :grade=A
15、;break;case 89 :grade=B;break;/-case 60 :grade=D;break;default:grade=E;/break;printf(grade=%cn,grade); 【6】switch語句程序中的不足:分支太多(42個)#include stdio.hvoid main(void)int score;char grade;scanf(%d,&score);switch(score)case 100:grade=A;break;case 99 :grade=A;break;/-case 90 :grade=A;break;case 89 :grade=B;
16、break;/-case 60 :grade=D;break;default:grade=E;/break;printf(grade=%cn,grade); 改進程序1#include stdio.hvoid main(void)int score;char grade;scanf(%d,&score);switch(score/10)case 10 :grade=A;break;case 9 :grade=A;break;case 8 :grade=B;break;case 7 :grade=C;break;case 6 :grade=D;break;default:grade=E;/bre
17、ak;printf(grade=%cn,grade); 【6】switch語句改進程序2-省break語句#include stdio.hvoid main(void)int score;char grade;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=E;/break;printf(grade=%cn,grade); 改進程序3-小數(shù)處理#inclu
18、de stdio.hvoid main(void)float score;char grade;scanf(%d,&score);switch(int)(score+0.5)/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=E;/break;printf(grade=%cn,grade); printf(grade=%cn,grade); 【6】switch語句#include stdio.hint main(vo
19、id)int score,count;lb1:printf(請輸入0100成績:);scanf(%d,&score);if(score100)goto lb1;return(0);輸入成績合法性判斷#include stdio.hint main(void)int score,count;count=0;while(count=0&score=100)break;count+;return(0);成績合法性:最多3次本章習題0、給定一百分制成績,根據(jù)綜合測評方案求其對應的學分績點。#include stdio.hint main(void)int score;float grade;scanf
20、(%d,&score); if(scoreb?a+:b+;”后,變量x、a、b的值分別為 。A、3 4 2 B、3 3 4 C、3 3 3 D、4 3 44、若有條件表達式 (exp)?a+:b-,則以下表達式中能完全等價于表達式(exp)的是 。A、(exp=0)B、(exp!=0) C、(exp=1)D、(exp!=1) AB本章習題5、以下程序運行的輸出結果是int x,y,z,m=10,n=5;x=(-m=n+)?-m:+n;printf(%4d%4d%4dn,m,n,x);m=9 n=7 x=7本章習題6、程序的運行結果是 #include stdio.hint main(void) int
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政許可評審費管理辦法
- 西海岸留守兒童管理辦法
- 西寧停車費管理辦法規(guī)定
- 設備工程師合同管理辦法
- 試驗室母體授權管理辦法
- 財務部欠款管理暫行辦法
- 貴州創(chuàng)業(yè)小作坊管理辦法
- 貴州零配件追溯管理辦法
- 足球公園會員制管理辦法
- 車險價格評估管理辦法
- 銀行外包人員培訓課件
- 四級人工智能訓練師(中級)職業(yè)技能等級認定考試題及答案
- 典型單級離心泵拆裝項目要求和評分標準
- 數(shù)控銑床編程與操作項目教程 第4版 課件 項目三 孔加工 任務四 鏜孔
- 《公路工程預算定額》(JTGT3832-2018)
- 室速室顫的搶救護理
- 純電動汽車高壓上電流程與故障分析
- 三方比價合同協(xié)議書范文范本
- 安徽省亳州市(2024年-2025年小學四年級語文)統(tǒng)編版開學考試(上學期)試卷及答案
- 運維成熟度模型
- 2024年中考英語補全短文真題匯編(附答案)2139
評論
0/150
提交評論