




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、,選擇結構程序設計,1,一、 什么叫“選擇” 二、 在C中選擇結構的表現形式 三、 “關系運算”與“邏輯運算” 四、 選擇結構的使用實例 五、 總結、疑問、常見錯誤,主要內容,2,從小學時代: 語文課的造句練習: 如果就 英語學習中單詞: if then ,一、什么叫“選擇”,3,生活中的“選擇” 體育課排隊中位置的選擇 第一次排隊 來了新人的排隊 大學的選擇: 高考分數、學校知名度、興趣、就業前景、 風險:招生數量、競爭人數、,4,生活中的“選擇” 道路上的選擇 道口分類:三岔口、十字路口、五道口、N道口 選擇的依據?目的地、道路、暢通性,5,講座 選擇結構程序設計,生活中的“選擇” 領導要
2、求:明天上午10點鐘到北京清華大學參加會議,后天回校參加選舉會。你怎么辦? 交通工具的選擇:飛機、火車、汽車 ,6,講座 選擇結構程序設計,總結: 依據某些條件實現(達到)某個目標的情況處理稱為選擇。 因此首先必須知道“條件”,然后是使用適當的處理方式。 選擇的必要條件:“條件”,7,講座 選擇結構程序設計,在C中選擇結構的表現形式,一般稱為 if 語句 switch 語句 可以從不同的角度去觀察分析這兩個語句。,二、在C中“選擇結構”的表現形式,8,講座 選擇結構程序設計,1 從詞義看: if 語句 switch 語句,9,選擇結構,單分支,雙分支,if (表達式) 語句,多分支,if (表
3、達式) 語句else 語句,if (表達式1) 語句 else if (表達式) 語句 else 語句n,if 語句的嵌套,switch 語句,講座 選擇結構程序設計,2 從分支看分為三種分支,10,if (表達式) 語句,switch (表達式) case : . ,講座 選擇結構程序設計,3 從一般形式的角度分兩種,基本結構 : 選擇標識符 (表達式) 語句,你注意到與前面第一部分的介紹有什么不同嗎?,(表達式),11,講座 選擇結構程序設計,關于表達式的定義,表達式由運算符、常量及變量構成。,C語言的表達式基本遵循一般代數規則。 雖然進一步細分,又分為算術表達式、關系表達式、賦值表達式,
4、 有幾點卻是與C語言緊密相關的需要注意。 1. 類型轉換 2. 復合運算的使用,12,講座 選擇結構程序設計,根據給定的條件判斷決定要執行的操作。,單選擇,語句格式: if (表達式) 語句; 例: if (ab) x=a;,if 語句的使用。,13,舉例,講座 選擇結構程序設計,#include void main() float a,b,t=0; scanf(“%f,%f”, ,3,4, if (ab) t=a; a=b; b=t; ,3.00, 4.00,當某些語句作為一個整體出現的時候,必須是復合語句的形式。,14,講座 選擇結構程序設計,if 語句中對于表達式的要求,1. 對表達式的
5、類型沒有任何要求 2. 使用的是表達式的結果值 3. 這個結果值若非0,則都作為“真”處理。 4. 針對上一條,對float類型的結果要格外注意。,15,講座 選擇結構程序設計,switch 語句的使用。,格式:switch(表達式) case 常量表達式:語句序列; case 常量表達式:語句序列; case 常量表達式n: 語句序列n; default :語句序列n+1; ,16,講座 選擇結構程序設計,switch 語句中注意的問題,1. 規則上對表達式的類型沒有任何要求,但實際使用中一般采用結果為整形或字符型的表達式,或者是與常量表達式類型一致的表達式. 2. 使用的是表達式的結果值與
6、常量表達式“等于”的比較結果。 3. 要注意case的執行順序的影響。,17,講座 選擇結構程序設計,在班級排隊中排隊的依據是“相互之間身高”的差異; 在三角形構成判定定理中要求“任意兩邊之和大于第三邊”; 因此兩個對象(量)之間不僅可以實施算術運算,還存在一定的“關系”。 小學時就知道:ab是否成立要看具體值。 在C語言中稱之為關系運算。,三、“關系運算”與“邏輯運算”,18,運算定義、運算符號、運算對象,講座 選擇結構程序設計,這些運算相互之間的優先級,與其它運算組合時的優先級,運算結果值、如何使用這個結果,關心什么?,19,關系運算符, = = != (6種),講座 選擇結構程序設計,優
7、先級,賦值 關系( 后2前4 ) 算術,關系表達式,用關系運算符將兩個表達式連接起來的式子.,算術、關系、邏輯、賦值、字符。,值(結果),真(1) 假(0),舉例,已知: (a=3、b=2、 c=1、 d=0),0,a=bc,d=ab+c,1,53 ?,d=ab+c?,關系運算符和關系表達式,20,講座 選擇結構程序設計,關系運算是表述對象之間的關系是否成立,在給出具體值必然有一個確定的、唯一的結果:要么成立、要么不成立。 上升到理論高度,將這了結果稱為邏輯值:“真”、“假”。 看一下造句題: 如果a來了并且b也來了,才能打開門。 如果a來了或者b也來了,都能打開門。 以上兩個問題引入了一個新
8、的運算:邏輯運算。,21,邏輯運算符,!(邏輯非) scanf(“%f%f”, ,針對要求選擇單分支結構即可。,單分支,要求,編成,采用固定輸出模式是,已經符合如何處理,不符合時如何處理。,25,要求,講座 選擇結構程序設計,#include void main() float a,b,c,p,s; scanf(“%f,%f,%f”, ,如何判斷是三角形的三邊?如何求三角形的面積。,3,4,5 s= 6.00,3,4,8 Not a triangle!,雙分支,分析,輸入三角形的三邊,求三角形的面積。,26,格式,舉例,講座 選擇結構程序設計,if (cost3000) cash=500; e
9、lse if (cost2000) cash=300; else if (cost1500) cash=200; else if (cost1000) cash=100; else cash=0;,if (表達式1) 語句 else if (表達式) 語句 else 語句n,語句本身含分號,多分支(一),27,if語句的嵌套,講座 選擇結構程序設計,在if語句中又包含一個或多個if語句。,被嵌套的條件語句和嵌套進去的條件語句既可是單分支,也可是雙分支。,if (表達式) if (表達式) 語句 else 語句 else if (表達式3) 語句3 else 語句4,注意,if與else的配對原
10、則: else總是與它上面的最近的未配對的if配對。,分析方法,1、主句是單分支還是雙分支的。 2、嵌套進來的子句是雙分支還是單分支的,嵌套在if后面還是else后面。,多分支(二),28,開關語句,講座 選擇結構程序設計,switch (表達式) case 常量表達式1:語句1 case 常量表達式2:語句2 case 常量表達式3:語句3 case 常量表達式n:語句n default: 語句n+1 ,當分支較多時,使用嵌套的if語句層數多,程序冗長而且可讀性降低。此時可以考慮使用switch語句(開關語句)來處理多分支。,多分支(三),29,舉例,#include void main()
11、 char grade; printf(“請輸入考試等級AD:”); scanf(“%c”, ,B 7079 6069 60 Error,根據輸入的考試成績等級打印出百分制分數段。 A: 80100 B: 7079 C: 6069 D: 60,說明:應在每一個printf后加break語句,講座 選擇結構程序設計,30,完善后,#include void main() char grade; printf(“請輸入考試等級AD:”); scanf(“%c”, ,B 7079,最后一行的break可以省略。,講座 選擇結構程序設計,31,問題,#include void main() int s
12、core; printf(“請輸入考試成績0100:”); scanf(“%c”, ,根據輸入的考試成績(百分制整數)打印出等級水平。(使用switch語句實現) A: 80100 B: 7079 C: 6069 D: 60,思考:本程序有問題么?,理想中,講座 選擇結構程序設計,思考,使用什么結構來解決問題?,32,#include void main() int score, p; printf(“請輸入考試成績0100:”); scanf(“%c”, ,改進程序1,11種情況,思考:不同case值時執行相同的操作,是否可以合并?,講座 選擇結構程序設計,33,#include void
13、main() int score, p; printf(“請輸入考試成績0100:”); scanf(“%c”, ,改進程序2,注意:多個case共用一組執行語句時,共用的執行語句寫在最后一個case的后面。,講座 選擇結構程序設計,34,問題,輸入一年號,判斷這一年是否為閏年.,講座 選擇結構程序設計,分析,當給出數學表達式后,如何轉化為程序.,參考,N-S圖是結構化程序設計中常用的方法,,35,參考程序,講座 選擇結構程序設計,#include void main() int year,leap; scanf(%d, ,運行情況如下: 輸入:1800 輸出:1800 is not a le
14、ap year 輸入:2000 輸出:2000 is a leap year 輸入:1996 輸出:1996 is a leap year,條件可否合并寫成一行呢?,36,改進程序,講座章 選擇結構程序設計,#include void main() int year,leap; scanf(%d, ,37,講座 選擇結構程序設計,總結,前面所用的例子基本上都取自教材中,這里只是重新梳理分析。,選擇結構有兩種基本形式,但是能組合出多種變化; 表達式不僅有算數表達式、還有關系、邏輯、條件(?)、逗號、賦值,等等。 表達式的使用要特別注意優先級的影響。 在VC中“邏輯與”的表達式當求解到“假”時,后
15、面的不再計算。,38,講座 選擇結構程序設計,問題?,能看懂程序,但是自己對立寫不出來; 模仿是學習的必要階段,但只是初級階段。 只有親自動手才能熟悉;經驗需要自己總結。 如何設計程序的結構? 如果讓你做一道菜,你怎么完成? 再復雜的機械,也是由簡單部分構成的,能把所有完成的任務分解成一步一步的,你就會寫程序了。 如何驗證程序的正確與否? 你會驗證一個公式的正確性,就會驗證程序的正確性,原理一樣、方法多種。,39,講座 選擇結構程序設計,4. 復雜的表達式如何簡單化? 加入圓括號,明顯地表示出結構關系; 充分利用優先級的影響。 5. 如何快速的排除錯誤? 先排除頭三個錯誤;鼠標點擊提示后,光標到錯誤所在的行,90%的錯誤在本行。 6. 語法錯誤與語義錯誤是兩個概念 要求計算a+b,程序中寫成a-b,計算機不會知道這個錯誤。,40,講座 選擇
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工程聯營管理制度
- 醫院口腔科管理制度
- 節日學校安全管理制度
- 出納開立戶管理制度
- 水產電器設備管理制度
- 持續質量小組管理制度
- 水務公司存貨管理制度
- 項目管理關鍵成功因素試題及答案
- 扶貧產業基金管理制度
- 木材公司庫房管理制度
- 2025年中國1,2-環氧丁烷行業市場規模調研及投資前景研究分析報告
- 濟南長清產業發展投資控股集團有限公司招聘筆試題庫2025
- 合同延期協議書的范本
- 2025年行政職業能力測驗試卷及答案
- 廣東省廣州市越秀區2024-2025學年七年級下學期期末考試語文試題
- 道觀廟宇托管協議書
- 硬膜下血腫護理查房
- 2025年四川省成都市武侯區中考道德與法治模擬試卷
- 兒科脫水的分度及護理
- 3 春夜喜雨課件(共16張PPT)
- 籃球--傳切配合(縱切)課件.ppt
評論
0/150
提交評論