




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、高級語言程序設(shè)計高級語言程序設(shè)計選擇程序設(shè)計(選擇程序設(shè)計(2)復習復習n1 判斷條件的形式:通常是用關(guān)系表達式判斷條件的形式:通常是用關(guān)系表達式n2 判斷條件的結(jié)果:邏輯真判斷條件的結(jié)果:邏輯真 1、邏輯假、邏輯假 0n3 實際上除了關(guān)系表達式之外,實際上除了關(guān)系表達式之外,任何有計算結(jié)果任何有計算結(jié)果的表達式都可以作為的表達式都可以作為判斷條件判斷條件,計算結(jié)果不為零,計算結(jié)果不為零的數(shù)均轉(zhuǎn)化為邏輯真,計算結(jié)果為的數(shù)均轉(zhuǎn)化為邏輯真,計算結(jié)果為0即為邏輯假即為邏輯假n 算術(shù)表達式算術(shù)表達式n 函數(shù)調(diào)用表達式函數(shù)調(diào)用表達式n4甚至是簡單的變量或常量都可以甚至是簡單的變量或常量都可以n 選擇結(jié)構(gòu)
2、的兩種形式:選擇結(jié)構(gòu)的兩種形式:n if ( condition )n n if (condition )n n elsen 注意大括號的使用注意大括號的使用 n復合語句塊用復合語句塊用 括起來括起來n if ( )n n .多條語句復合到一起多條語句復合到一起n .n n一條語句的時候省略一條語句的時候省略 問題問題3: 按成績把學生分成多組按成績把學生分成多組n問題描述:教師要把參加某次測驗的學問題描述:教師要把參加某次測驗的學生按成績的分數(shù)段(生按成績的分數(shù)段(90以上,以上,80到到89,70到到79,60到到69,小于,小于60)分成多組,)分成多組,并統(tǒng)計出各組的人數(shù)。并統(tǒng)計出各組
3、的人數(shù)。分析分析n輸入輸入: 學生成績學生成績graden輸出輸出:根據(jù)成績的范圍,輸出不同的結(jié)果根據(jù)成績的范圍,輸出不同的結(jié)果 A,B,C,D,或者,或者F,和統(tǒng)計結(jié)果,和統(tǒng)計結(jié)果 n 如何判斷如何判斷grade所在的范圍?所在的范圍?n 90以上,以上,80到到89,70到到79,60到到69,小于,小于60n if (grade=90) n 但是但是 if( 89=grade=60)n if ( grade = 60)nif ( grade =60) n if ( grade =60) nn if ( grade = 90 )n printf(“good!in group An”);ne
4、lsen if ( grade =80 )n printf ( “ better!in groupn”); n elsen printf( “ ok, in C or D or Fn”);更好的寫法更好的寫法nif ( grade = 90 )n printf(“good!in group An”);nelse if ( grade =80 )n printf ( “ better!in groupn”); nelsen printf( “ ok, in C or D or Fn”);注意:注意:n多個多個if-else嵌套,嵌套,if else的匹配原則是:的匹配原則是: else與前面最近
5、的沒有被使用的與前面最近的沒有被使用的if匹配匹配 n 表達式1表達式2表達式3語句1語句2語句3語句n其它語句TTTFFF算法設(shè)計(算法設(shè)計(1)1 求和變量求和變量aNum,bNum,cNum,dNum,fNum初始化初始化為為0;2 輸入學生成績;輸入學生成績;3 如果輸入沒有結(jié)束則執(zhí)行如果輸入沒有結(jié)束則執(zhí)行(4)否則執(zhí)行否則執(zhí)行(9);4 如果成績大于或等于如果成績大于或等于90,輸出分到,輸出分到A組信息,組信息,aNum加加1,返返回到(回到(2););5 否則如果成績還大于或等于否則如果成績還大于或等于80,輸出分到,輸出分到B組信息,組信息,bNum加加1,返回到(返回到(2)
6、;6 否則如果成績還大于或等于否則如果成績還大于或等于70,輸出分到,輸出分到C組信息,組信息,cNum加加1,返回到(返回到(2);7 否則如果成績還大于或等于否則如果成績還大于或等于60,輸出分到,輸出分到D組信息,組信息,dNum加加1,返回到(返回到(2);8 否則輸出分到否則輸出分到F組信息,組信息,fNum加加1,返回到(返回到(2);9 輸出統(tǒng)計結(jié)果輸出統(tǒng)計結(jié)果n算法實現(xiàn)算法實現(xiàn) 見見ifelsenest.c n#includenint main(void)nn int aNum = 0, bNum = 0, cNum = 0, dNum = 0, fNum = 0;n int
7、grade;n while( scanf(%d,&grade) != EOF)n n if( grade = 90 )n printf(Good! you belong in group An);n aNum = aNum + 1;n n else if ( grade = 80 )n printf(Better! you belong in group Bn);n bNum = bNum + 1;n n else if ( grade = 70 ) n printf(Middle! you belong in group Cn);n cNum = cNum + 1;n n else
8、if ( grade = 60 ) n printf(Pass! you belong in group Dn);n dNum = dNum + 1;n n else n printf(Sorry, you are failed, belong in group Fn);n fNum = fNum + 1;n n n printf(aNum = %dn, aNum);n printf(bNum = %dn, bNum);n printf(cNum = %dn, cNum);n printf(dNum = %dn, dNum);n printf(FNum = %dn, fNum);n retur
9、n 0;n分析一下該算法的執(zhí)行情況分析一下該算法的執(zhí)行情況n你可以運行算法你可以運行算法1的代碼,看看每個學生的代碼,看看每個學生成績要判斷幾次才能找到它適合的位置。成績要判斷幾次才能找到它適合的位置。n如果成績都是如果成績都是90以上會怎樣?以上會怎樣?n如果成績都是如果成績都是60、70分甚至更低會怎么分甚至更低會怎么樣?樣?n正常情況下學生的成績處于中游的比較正常情況下學生的成績處于中游的比較多,即大多數(shù)都在多,即大多數(shù)都在70和和80之間,之間,符合客符合客觀實際的、更好的結(jié)構(gòu)應(yīng)該是什么?觀實際的、更好的結(jié)構(gòu)應(yīng)該是什么? n grade80grade70grade60grade90F組
10、A組B組D組C組開始NNNNYYYY 圖 3.16 嵌套的選擇結(jié)構(gòu)舉例 n算法實現(xiàn)算法實現(xiàn) 見見ifelsebetter.c重新分析一下問題重新分析一下問題n如果把成績除以如果把成績除以10取整,可以發(fā)現(xiàn),取整,可以發(fā)現(xiàn),100分對應(yīng)分對應(yīng)10,90到到99分對應(yīng)分對應(yīng)9,80到到89分對應(yīng)分對應(yīng)8,依此類推,依此類推,0到到9分的對應(yīng)分的對應(yīng)0 n依據(jù)整型常量依據(jù)整型常量10,9,8,7,6,5,4,3,2,1,0 可斷定該同學應(yīng)該分到哪一組可斷定該同學應(yīng)該分到哪一組 算法設(shè)計(算法設(shè)計(2)1 求和變量求和變量aNum,bNum,cNum,dNum,fNum初始化為初始化為0;2 輸入學生
11、成績輸入學生成績grade;3 如果如果grade大于大于100或小于或小于0,輸出錯誤信息,返回到(,輸出錯誤信息,返回到(2););4 如果輸入沒有結(jié)束則執(zhí)行如果輸入沒有結(jié)束則執(zhí)行(5)否則執(zhí)行否則執(zhí)行(12)5 把成績除以把成績除以10并取整,得到對應(yīng)的整型值并取整,得到對應(yīng)的整型值number6 如果如果number是是10或或9,輸出,輸出A組信息,組信息,aNum加加1,返回(,返回(2););7 如果如果number是是 8,輸出,輸出B組信息,組信息,bNum加加1,返回到(,返回到(2););8 如果如果number是是7,輸出,輸出C組信息,組信息,cNum加加1,返回到(
12、,返回到(2););9 如果如果number是是6,輸出,輸出D組信息,組信息,dNum加加1,返回到(,返回到(2););10如果如果number是是5或或4或或3或或2或或1或或0,輸出,輸出F組信息,組信息,fNum加加1,返回到(,返回到(2););11 如果如果number是其它數(shù)字,輸出錯誤信息,返回到(是其它數(shù)字,輸出錯誤信息,返回到(2););12 輸出統(tǒng)計結(jié)果。輸出統(tǒng)計結(jié)果。switch case 多分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)n switch (整型表達式)(整型表達式)n case 常量表達式常量表達式:n 要執(zhí)行的語句要執(zhí)行的語句n break;n case常量表達式常量
13、表達式:n 要執(zhí)行的語句要執(zhí)行的語句n break;n n default:n 默認的執(zhí)行語句默認的執(zhí)行語句n n 幾個組成部分幾個組成部分 nswitch (表達式表達式) 必須是整型值的表達式必須是整型值的表達式 nswitch的主體用一對花括號括起的主體用一對花括號括起 n多個平行的多個平行的 case 常量表達式常量表達式: n每個每個case 里的要執(zhí)行的語句可以是多條語句,里的要執(zhí)行的語句可以是多條語句,它們不必使用它們不必使用括起來。也可以沒有語句括起來。也可以沒有語句n在整個在整個swith主體的最后是一個可選的主體的最后是一個可選的default : 動作Case 1 bre
14、akCase 2Case ndefaultn算法實現(xiàn)(算法實現(xiàn)(switch case) n見見 switchint.c5分制成績統(tǒng)計問題分制成績統(tǒng)計問題輸入的學生成績是輸入的學生成績是 A/a, B/b,n成績是一個字符成績是一個字符 怎么輸入字符呢?字符是什么?怎么輸入字符呢?字符是什么?n字符可以看成整數(shù)(字符可以看成整數(shù)(ascii碼)碼)n如何判斷輸入的是什么字符?如何判斷輸入的是什么字符?字符型字符型n char n char c1, c2, c3;n c1 = A;n c2 = b;n c3 = 1;n n也可以用整型變量存放字符常量,如也可以用整型變量存放字符常量,如n int
15、 grade1, grade2;n grade1 = A;n grade2 = B;n計算機內(nèi)部接受的是計算機內(nèi)部接受的是 A , B的的ASCII碼。碼。字符比較字符比較n兩個字符常量或者存放字符常量的變量兩個字符常量或者存放字符常量的變量可以比較大小可以比較大小nascii碼進行比較碼進行比較字符型數(shù)據(jù)的輸入字符型數(shù)據(jù)的輸入n可以使用可以使用scanf和和printf函數(shù)對字符型數(shù)函數(shù)對字符型數(shù)據(jù)進行輸入和輸出,占位符是據(jù)進行輸入和輸出,占位符是%c。 nASCII碼是碼是10的字符是回車符。這說明的字符是回車符。這說明我們輸入了一個字符我們輸入了一個字符a后輸入的回車后輸入的回車符被變量
16、符被變量a第二次讀到了。第二次讀到了。n這個回車符是沒有用的,因此用一個臨這個回車符是沒有用的,因此用一個臨時變量時變量t把從輸入緩沖區(qū)中讀出。下例的把從輸入緩沖區(qū)中讀出。下例的scanf(“%d”,&t)就起這個作用。就起這個作用。鍵盤讀一個字符的函數(shù)鍵盤讀一個字符的函數(shù)n getchar( ) n n a = getchar( ); 代替代替scanf(“%c”,&a);n getchar( ); 代替代替 scanf(“%c”,&t);輸出一個字符到屏幕的函數(shù)輸出一個字符到屏幕的函數(shù)n putchar(a );n代替代替n printf(“%c”,a); 算法設(shè)計
17、(算法設(shè)計(3)1 求和變量求和變量aNum,bNum,cNum, dNum,fNum初始化為初始化為0;2 輸入學生成績輸入學生成績grade;3 如果輸入沒有結(jié)束則執(zhí)行如果輸入沒有結(jié)束則執(zhí)行(4)否則執(zhí)行否則執(zhí)行(10);4 如果如果grade是是A, 輸出輸出A組信息,組信息,aNum加加1,返回到(,返回到(2););5 如果如果grade是是B, 輸出輸出B組信息,組信息,bNum加加1,返回到(,返回到(2););6 如果如果grade是是C, 輸出輸出C組信息,組信息,cNum加加1,返回到(,返回到(2););7 如果如果grade是是D,輸出輸出D組信息,組信息,dNum加加
18、1,返回到(,返回到(2););8 如果如果grade是是F, 輸出輸出F組信息,組信息,fNum加加1,返回到(,返回到(2););9 如果如果grade是其它字符,輸出錯誤信息,返回到(是其它字符,輸出錯誤信息,返回到(2););10 輸出統(tǒng)計結(jié)果。輸出統(tǒng)計結(jié)果。n算法實現(xiàn)算法實現(xiàn) 見見switch5grade.c從鍵盤獲得一個字符的另外兩個函數(shù)從鍵盤獲得一個字符的另外兩個函數(shù)n#includengetche( ) ,它能接收鍵盤輸入的任意一個字符,它能接收鍵盤輸入的任意一個字符,無無需回車即可以接受需回車即可以接受,自動的顯示到屏幕上,稱之為,自動的顯示到屏幕上,稱之為回顯回顯。nget
19、ch( ),它同,它同getche( ) 不同的就是不同的就是無回顯無回顯。n這兩個與這兩個與getchar( )比較,比較,getchar( )需要按回車需要按回車鍵鍵,變量才能在輸入緩沖區(qū)中讀到一個字符,變量才能在輸入緩沖區(qū)中讀到一個字符,無回無回顯。顯。 n演示三種字符輸入函數(shù)演示三種字符輸入函數(shù)n觀察它們的區(qū)別觀察它們的區(qū)別問題問題4:判斷某年是否為閏年:判斷某年是否為閏年n問題分析:問題分析:n 判斷某年是不是閏年的條件判斷某年是不是閏年的條件“某年能被某年能被4整除但不整除但不能被能被100整除整除或者或者能被能被4整除又能被整除又能被400整除整除” n某年是閏年的條件為某年是閏
20、年的條件為n(1) “year能被能被4整除整除”并且并且“year不能被不能被100整除整除”n或者或者n(2) “year能被能被4整除整除”并且并且“year也能被也能被400整除整除”并且關(guān)系并且關(guān)系的兩個判斷如何表示?的兩個判斷如何表示?nint pass = 0;nint grade1,grade2;n scanf(“%d%d”,&grade1,&grade2);n如果如果 grade1 = 60 且且 grade2 = 60 pass=1n用嵌套用嵌套 或關(guān)系或關(guān)系的兩個判斷如何表示?的兩個判斷如何表示?nint nopass = 0;nint grade1,gr
21、ade2;n scanf(“%d%d”,&grade1,&grade2);n如果如果 grade1 60 或者或者 grade2 = 60 ) & ( grade2 = 60 )n邏輯與的優(yōu)先級低于關(guān)系運算,可以省略邏輯與的優(yōu)先級低于關(guān)系運算,可以省略( )n 上式等價于上式等價于grade1 = 60 & grade2 = 60 n ( grade1 60 ) | ( grade2 60 ) n邏輯或的優(yōu)先級低于關(guān)系運算,可以省略邏輯或的優(yōu)先級低于關(guān)系運算,可以省略 ( ) ;n 上式等價于上式等價于 grade1 60 | grade2 = 90 ) n邏輯非是單目運算,它的優(yōu)先級高于關(guān)系運算,因此不可以邏輯非是單目運算,它的優(yōu)先級高于關(guān)系運算,因此不可以省略省略( )優(yōu)先級與結(jié)合性優(yōu)先級與結(jié)合性n算術(shù)運算算術(shù)運算關(guān)系運算關(guān)系運算邏輯與運算邏輯與運算邏輯邏輯或運算或運算, 它們依次降低,它們依次降低,n但邏輯非運算的優(yōu)先級高于算術(shù)運算但邏輯非運算的優(yōu)先級高于算術(shù)運算n邏輯運算是左結(jié)合的邏輯運算是左結(jié)合的邏輯運算的邏輯運算的短路性短路性n邏輯運算的操作數(shù)是邏輯運算的操作數(shù)是0和和1,0和和1的運算是有規(guī)律的的運算是有規(guī)律的n 由由“邏輯與邏輯與”運算組成的表達式,運算組成的表達式,從左至右計算,從左至右計算
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【西安】陜西西安經(jīng)濟技術(shù)開發(fā)區(qū)管委會事業(yè)編制公辦學校招聘175人筆試歷年典型考題及考點剖析附帶答案詳解
- 罩生字教學課件
- 舞動的北京教學課件
- 美麗的彩帶 教學課件
- 語法教學課件
- 轉(zhuǎn)盤教學課件制作
- 敬人主題班會課件
- 教育收費政策課件
- 教育扶貧資助政策課件
- 文津圖書獎活動方案
- 商場攤位購買合同協(xié)議
- 2024年泉州實驗中學初一新生入學考試數(shù)學試卷
- 2025年第二屆全國安康杯安全生產(chǎn)知識競賽題庫及答案(共190題)
- 護士法律法規(guī)知識培訓課件
- DB11-T 2398-2025 水利工程巡視檢查作業(yè)規(guī)范
- 2025年光伏行業(yè)上半年發(fā)展回顧與下半年形勢展望
- 輸血管理相關(guān)制度
- 2025至2031年中國紙巾用香精行業(yè)投資前景及策略咨詢研究報告
- 老年性癡呆病人的護理與管理
- 無固定期限勞工合同通知書
- GB/T 45161-2024液氫容器用安全閥技術(shù)規(guī)范
評論
0/150
提交評論