c語言選擇結(jié)構(gòu)講解_第1頁(yè)
c語言選擇結(jié)構(gòu)講解_第2頁(yè)
c語言選擇結(jié)構(gòu)講解_第3頁(yè)
c語言選擇結(jié)構(gòu)講解_第4頁(yè)
c語言選擇結(jié)構(gòu)講解_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

選擇結(jié)構(gòu)程序設(shè)計(jì)1一、什么叫“選擇”二、在C中選擇結(jié)構(gòu)的表現(xiàn)形式三、“關(guān)系運(yùn)算”與“邏輯運(yùn)算”四、選擇結(jié)構(gòu)的使用實(shí)例五、總結(jié)、疑問、常見錯(cuò)誤主要內(nèi)容2從小學(xué)時(shí)代:語文課的造句練習(xí):

如果……就……英語學(xué)習(xí)中單詞:

if……then……一、什么叫“選擇”3生活中的“選擇”體育課排隊(duì)中位置的選擇

第一次排隊(duì)來了新人的排隊(duì)大學(xué)的選擇:

高考分?jǐn)?shù)、學(xué)校知名度、興趣、就業(yè)前景、……風(fēng)險(xiǎn):招生數(shù)量、競(jìng)爭(zhēng)人數(shù)、……4生活中的“選擇”道路上的選擇

道口分類:三岔口、十字路口、五道口、N道口選擇的依據(jù)?目的地、道路、暢通性……5講座選擇結(jié)構(gòu)程序設(shè)計(jì)生活中的“選擇”領(lǐng)導(dǎo)要求:明天上午10點(diǎn)鐘到北京清華大學(xué)參加會(huì)議,后天回校參加選舉會(huì)。你怎么辦?交通工具的選擇:飛機(jī)、火車、汽車……6講座選擇結(jié)構(gòu)程序設(shè)計(jì)總結(jié):依據(jù)某些條件實(shí)現(xiàn)(達(dá)到)某個(gè)目標(biāo)的情況處理稱為選擇。因此首先必須知道“條件”,然后是使用適當(dāng)?shù)奶幚矸绞?。選擇的必要條件:“條件”7講座選擇結(jié)構(gòu)程序設(shè)計(jì)在C中選擇結(jié)構(gòu)的表現(xiàn)形式,一般稱為if語句switch語句可以從不同的角度去觀察分析這兩個(gè)語句。二、在C中“選擇結(jié)構(gòu)”的表現(xiàn)形式8講座選擇結(jié)構(gòu)程序設(shè)計(jì)1從詞義看:if語句switch語句9選擇結(jié)構(gòu)單分支雙分支if(表達(dá)式)語句多分支if(表達(dá)式)語句1else語句2if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2……else語句nif語句的嵌套switch語句講座選擇結(jié)構(gòu)程序設(shè)計(jì)2從分支看分為三種分支10if(表達(dá)式)語句switch(表達(dá)式){case:……..}講座選擇結(jié)構(gòu)程序設(shè)計(jì)3從一般形式的角度分兩種基本結(jié)構(gòu):選擇標(biāo)識(shí)符(表達(dá)式)語句你注意到與前面第一部分的介紹有什么不同嗎?(表達(dá)式)11講座選擇結(jié)構(gòu)程序設(shè)計(jì)關(guān)于表達(dá)式的定義表達(dá)式由運(yùn)算符、常量及變量構(gòu)成。C語言的表達(dá)式基本遵循一般代數(shù)規(guī)則。雖然進(jìn)一步細(xì)分,又分為算術(shù)表達(dá)式、關(guān)系表達(dá)式、賦值表達(dá)式,……有幾點(diǎn)卻是與C語言緊密相關(guān)的需要注意。1.類型轉(zhuǎn)換2.復(fù)合運(yùn)算的使用12講座選擇結(jié)構(gòu)程序設(shè)計(jì)根據(jù)給定的條件判斷決定要執(zhí)行的操作。單選擇語句格式:if(表達(dá)式){語句;}例:if(a>b)x=a;

語句零條件非零if語句的使用。13舉例講座選擇結(jié)構(gòu)程序設(shè)計(jì)#include<stdio.h>voidmain(){floata,b,t=0;scanf(“%f,%f”,&a,&b);if(a>b){t=a;a=b;b=t;}printf(“%5.2f,%5.2f\n”,a,b);}3,4

……if(a>b)t=a;a=b;b=t;……3.00,4.00當(dāng)某些語句作為一個(gè)整體出現(xiàn)的時(shí)候,必須是復(fù)合語句的形式。14講座選擇結(jié)構(gòu)程序設(shè)計(jì)if語句中對(duì)于表達(dá)式的要求1.對(duì)表達(dá)式的類型沒有任何要求2.使用的是表達(dá)式的結(jié)果值3.這個(gè)結(jié)果值若非0,則都作為“真”處理。4.針對(duì)上一條,對(duì)float類型的結(jié)果要格外注意。

15講座選擇結(jié)構(gòu)程序設(shè)計(jì)switch語句的使用。格式:switch(表達(dá)式) {case常量表達(dá)式1:語句序列1; case常量表達(dá)式2:語句序列2;……case常量表達(dá)式n:語句序列n; [default:語句序列n+1;]

}16講座選擇結(jié)構(gòu)程序設(shè)計(jì)switch語句中注意的問題1.規(guī)則上對(duì)表達(dá)式的類型沒有任何要求,但實(shí)際使用中一般采用結(jié)果為整形或字符型的表達(dá)式,或者是與常量表達(dá)式類型一致的表達(dá)式.2.使用的是表達(dá)式的結(jié)果值與常量表達(dá)式“等于”的比較結(jié)果。3.要注意case的執(zhí)行順序的影響。17講座選擇結(jié)構(gòu)程序設(shè)計(jì)在班級(jí)排隊(duì)中排隊(duì)的依據(jù)是“相互之間身高”的差異;在三角形構(gòu)成判定定理中要求“任意兩邊之和大于第三邊”;……因此兩個(gè)對(duì)象(量)之間不僅可以實(shí)施算術(shù)運(yùn)算,還存在一定的“關(guān)系”。小學(xué)時(shí)就知道:a<b是否成立要看具體值。在C語言中稱之為關(guān)系運(yùn)算。三、“關(guān)系運(yùn)算”與“邏輯運(yùn)算”18運(yùn)算定義、運(yùn)算符號(hào)、運(yùn)算對(duì)象講座選擇結(jié)構(gòu)程序設(shè)計(jì)這些運(yùn)算相互之間的優(yōu)先級(jí)與其它運(yùn)算組合時(shí)的優(yōu)先級(jí)運(yùn)算結(jié)果值、如何使用這個(gè)結(jié)果關(guān)心什么?19關(guān)系運(yùn)算符<<=>>===!=(6種)講座選擇結(jié)構(gòu)程序設(shè)計(jì)優(yōu)先級(jí)賦值<關(guān)系(后2<前4)<算術(shù)關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來的式子.算術(shù)、關(guān)系、邏輯、賦值、字符。值(結(jié)果)真(1)假(0)舉例已知:(a=3、b=2、c=1、d=0)0a==b>cd==a>b+c15>3?d=a>b+c?關(guān)系運(yùn)算符和關(guān)系表達(dá)式20講座選擇結(jié)構(gòu)程序設(shè)計(jì)關(guān)系運(yùn)算是表述對(duì)象之間的關(guān)系是否成立,在給出具體值必然有一個(gè)確定的、唯一的結(jié)果:要么成立、要么不成立。上升到理論高度,將這了結(jié)果稱為邏輯值:“真”、“假”。看一下造句題:如果a來了并且b也來了,才能打開門。如果a來了或者b也來了,都能打開門。以上兩個(gè)問題引入了一個(gè)新的運(yùn)算:邏輯運(yùn)算。21邏輯運(yùn)算符!(邏輯非)&&(邏輯與)||(邏輯或)運(yùn)算規(guī)則優(yōu)先次序賦值<||<&&<關(guān)系<算術(shù)<!講座選擇結(jié)構(gòu)程序設(shè)計(jì)(1)!:取邏輯值的相反值。(2)&&:參加運(yùn)算的兩個(gè)邏輯值都為真時(shí),結(jié)果為真(1)。(3)||:參加運(yùn)算的兩個(gè)邏輯值都為假時(shí),結(jié)果為假(0)。邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式和邏輯量連接起來的式子。舉例已知:(a=1b=0)1a||b&&0!a&&(5>3)||b0邏輯運(yùn)算符和邏輯表達(dá)式22講座選擇結(jié)構(gòu)程序設(shè)計(jì)舉例5>3&&8<4-!00(5>3)&&(8<(4-!0))4&&5>3||21邏輯運(yùn)算符兩側(cè)的運(yùn)算對(duì)象不但可以是0和1,也可以是0或非0的整數(shù),也可是任何類型的數(shù)據(jù)。系統(tǒng)判定標(biāo)準(zhǔn):0為假;非0為真。23講座選擇結(jié)構(gòu)程序設(shè)計(jì)解決實(shí)際問題的步驟1.分析已知條件、解決分步2.根據(jù)問題決定使用什么結(jié)構(gòu)、語句3.編寫源程序(代碼)4.調(diào)試:排出語法錯(cuò)誤,用已知初始數(shù)據(jù)和結(jié)果排出語義錯(cuò)誤。5.實(shí)際使用:用真實(shí)數(shù)據(jù)運(yùn)行程序。四、選擇結(jié)構(gòu)的應(yīng)用實(shí)例24思考按照從小到大的順序輸出數(shù)據(jù)講座選擇結(jié)構(gòu)程序設(shè)計(jì)#include<stdio.h>voidmain(){floata,b,t=0;scanf(“%f%f”,&a,&b);if(a>b){t=a;a=b;b=t;}printf(“%5.2f,%5.2f\n”,a,b);}針對(duì)要求選擇單分支結(jié)構(gòu)即可。單分支要求編成采用固定輸出模式是,已經(jīng)符合如何處理,不符合時(shí)如何處理。25要求講座選擇結(jié)構(gòu)程序設(shè)計(jì)#include<stdio.h>voidmain(){floata,b,c,p,s;scanf(“%f,%f,%f”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a)

{

p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf(“s=%7.2f\n”,s);

}elseprintf(“Notatriangle!\n”);}如何判斷是三角形的三邊?如何求三角形的面積。輸入a,b,c是三角形嗎?YNp(a+b+c)/2ssqrt(p*(p-a)*(p-b)*(p-c))輸出s輸出“非三角形!”3,4,5s=6.003,4,8Notatriangle!雙分支分析輸入三角形的三邊,求三角形的面積。26格式舉例講座選擇結(jié)構(gòu)程序設(shè)計(jì)if(cost>3000)cash=500;elseif(cost>2000)cash=300;elseif(cost>1500)cash=200;elseif(cost>1000)cash=100;elsecash=0;if(表達(dá)式1)語句1elseif(表達(dá)式2)語句2……else語句n語句本身含分號(hào)多分支(一)27if語句的嵌套講座選擇結(jié)構(gòu)程序設(shè)計(jì)在if語句中又包含一個(gè)或多個(gè)if語句。被嵌套的條件語句和嵌套進(jìn)去的條件語句既可是單分支,也可是雙分支。if(表達(dá)式1)

if(表達(dá)式2)語句1

[else語句2][else

if(表達(dá)式3)語句3

[else語句4]]注意if與else的配對(duì)原則:else總是與它上面的最近的未配對(duì)的if配對(duì)。分析方法1、主句是單分支還是雙分支的。2、嵌套進(jìn)來的子句是雙分支還是單分支的,嵌套在if后面還是else后面。多分支(二)28開關(guān)語句講座選擇結(jié)構(gòu)程序設(shè)計(jì)switch(表達(dá)式){case常量表達(dá)式1:語句1case常量表達(dá)式2:語句2case常量表達(dá)式3:語句3……case常量表達(dá)式n:語句ndefault:語句n+1}當(dāng)分支較多時(shí),使用嵌套的if語句層數(shù)多,程序冗長(zhǎng)而且可讀性降低。此時(shí)可以考慮使用switch語句(開關(guān)語句)來處理多分支。多分支(三)29舉例#include<stdio.h>voidmain(){chargrade;printf(“請(qǐng)輸入考試等級(jí)A~D:”);scanf(“%c”,&grade);switch(grade){case‘A’:printf(“80~100\n”);case‘B’:printf(“70~79\n”);case‘C’:printf(“60~69\n”);case‘D’:printf(“<60\n”);default:printf(“error\n”);}}B70~7960~69<60Error根據(jù)輸入的考試成績(jī)等級(jí)打印出百分制分?jǐn)?shù)段。A:80~100B:70~79C:60~69D:<60說明:應(yīng)在每一個(gè)printf后加break語句講座選擇結(jié)構(gòu)程序設(shè)計(jì)30完善后#include<stdio.h>voidmain(){chargrade;printf(“請(qǐng)輸入考試等級(jí)A~D:”);scanf(“%c”,&grade)switch(grade){case‘A’:printf(“80~100\n”);break;case‘B’:printf(“70~79\n”);break;case‘C’:printf(“60~69\n”);break;case‘D’:printf(“<60\n”);break;default:printf(“error\n”);}}B70~79最后一行的break可以省略。講座選擇結(jié)構(gòu)程序設(shè)計(jì)31問題#include<stdio.h>voidmain(){intscore;printf(“請(qǐng)輸入考試成績(jī)0~100:”);scanf(“%c”,&score);switch(score){case80~100:printf(“A\n”);break;case70~79:printf(“B\n”);break;case60~69:printf(“C\n”);break;case<60:printf(“D\n”);break;default:printf(“請(qǐng)輸入0~100之間的整數(shù)\n”);}}根據(jù)輸入的考試成績(jī)(百分制整數(shù))打印出等級(jí)水平。(使用switch語句實(shí)現(xiàn))A:80~100B:70~79C:60~69D:<60思考:本程序有問題么?理想中講座選擇結(jié)構(gòu)程序設(shè)計(jì)思考使用什么結(jié)構(gòu)來解決問題?32#include<stdio.h>voidmain(){intscore,p;printf(“請(qǐng)輸入考試成績(jī)0~100:”);scanf(“%c”,&score);p=score/10;switch(p){case0:printf(“D\n”);break;case1:printf(“D\n”);break;case2:printf(“D\n”);break;case3:printf(“D\n”);break;case4:printf(“D\n”);break;case5:printf(“D\n”);break;case6:printf(“C\n”);break;case7:printf(“B\n”);break;case8:printf(“A\n”);break;case9:printf(“A\n”);break;case10:printf(“A\n”);break;default:printf(“請(qǐng)輸入0~100之間的整數(shù)\n”);}}改進(jìn)程序111種情況思考:不同case值時(shí)執(zhí)行相同的操作,是否可以合并?講座選擇結(jié)構(gòu)程序設(shè)計(jì)33#include<stdio.h>voidmain(){intscore,p;printf(“請(qǐng)輸入考試成績(jī)0~100:”);scanf(“%c”,&score);p=score/10;switch(p){

case0:case1:case2:case3:case4:case5:printf(“D\n”);break;case6:printf(“C\n”);break;case7:printf(“B\n”);break;

case8:case9:case10:printf(“A\n”);break;default:printf(“請(qǐng)輸入0~100之間的整數(shù)\n”);}}改進(jìn)程序2注意:多個(gè)case共用一組執(zhí)行語句時(shí),共用的執(zhí)行語句寫在最后一個(gè)case的后面。講座選擇結(jié)構(gòu)程序設(shè)計(jì)34問題輸入一年號(hào),判斷這一年是否為閏年.講座選擇結(jié)構(gòu)程序設(shè)計(jì)真year被400整除year被4整除真假leap=0leap=1year被100整除真leap=1leap=0Leap真假輸出“閏年”輸出“非閏年”假假分析當(dāng)給出數(shù)學(xué)表達(dá)式后,如何轉(zhuǎn)化為程序.參考N-S圖是結(jié)構(gòu)化程序設(shè)計(jì)中常用的方法,35參考程序講座選擇結(jié)構(gòu)程序設(shè)計(jì)#include<stdio.h>voidmain(){intyear,leap;scanf("%d",&year);if(year%4==0){if(year%100==0){if(year%400==0)leap=1;

elseleap=0;}

elseleap=1;}elseleap=0;if(leap)printf("%dis",year);elseprintf("%disnot",year);printf("aleapyear\n",year);}運(yùn)行情況如下:輸入:1800輸出:1800isnotaleapyear輸入:2000輸出:2000isaleapyear輸入:1996輸出:1996isaleapyear條件可否合并寫成一行呢?36改進(jìn)程序講座章選擇結(jié)構(gòu)程序設(shè)計(jì)#include<stdio.h>voidmain(){intyear,leap;scanf("%d",&year);

if((year%4==0&&year%100!=0)||(year%400==0))leap=1;elseleap=0;

if(leap)printf("%dis",year);elseprintf("%disnot",year);printf("aleapyear\n",year)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論