版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGE課題項目三任務(wù)1新能源汽車電池組的選擇(單分支)課型講練授課班級授課時數(shù)1教學目標靈活運用關(guān)系及邏輯運算符;if語句的單分支語法結(jié)構(gòu)教學重點if語句的具體應(yīng)用。教學難點關(guān)系運算符和邏輯運算符具體運用。學情分析對于C語言語法知識的講解,容易理解,重點在于培養(yǎng)學生良好的編程習慣及編程規(guī)范,其二是培養(yǎng)學生的探究式自學能力,調(diào)試程序的能力。因而重點是語法知識的掌握,逐步過渡到培養(yǎng)學生良好的編程習慣及編程規(guī)范。教學效果教后記項目三任務(wù)1新能源汽車電池組的選擇(單分支)3.1.1任務(wù)目標通過鍵盤輸入新能源汽車的電池型號,如果輸入1則輸出使用鉛酸電池。(變量:電池型號batterytype)任務(wù)目標運行截圖如圖3-1-1所示:圖3-1-1任務(wù)目標截圖3.1.2知識儲備在日常生活中,總會出現(xiàn)根據(jù)條件來判定結(jié)果的情況。在程序中,我們將這種情況采用選擇結(jié)構(gòu)。if語句的格式格式:if(條件)語句組1;[else語句組2;]說明:[]格式代表可有可無,在實際使用[]中的內(nèi)容也可以不寫。C語言的選擇結(jié)構(gòu)是通過條件判斷語句來實現(xiàn)的,模塊化的結(jié)構(gòu)便于閱讀、調(diào)試和修改。選擇結(jié)構(gòu)有兩種方式來實現(xiàn):由if語句來實現(xiàn)的兩分支語句;由switch語句來實現(xiàn)的多分支語句。在選擇結(jié)構(gòu)中要對條件判斷表達式進行判斷,根據(jù)判斷的結(jié)果決定選擇哪一個分支路徑,條件判斷表達式大多情況下是由關(guān)系表達式或者邏輯表達式構(gòu)成。選擇結(jié)構(gòu)的三種流程圖如圖3-1-2所示,其中(1)為單分支結(jié)構(gòu),(2)為雙分支結(jié)構(gòu),(3)為多分支結(jié)構(gòu)。圖3-1-2選擇結(jié)構(gòu)的三種流程圖1.關(guān)系運算符及優(yōu)先順序關(guān)系運算符:<、<=、>、>=、==、!=,分別稱之為:小于、小于等于、大于、大于等于、等于、不等于。關(guān)系運算符,關(guān)系表達式等的說明如表3-1-1所示:表3-1-1關(guān)系運算符等的說明名稱說明關(guān)系運算符系統(tǒng)提供了六種關(guān)系運算符<:小于雙目運算符優(yōu)先級第6級<=:小于等于雙目運算符同上>:大于雙目運算符同上>=:大于等于雙目運算符同上==:等于雙目運算符優(yōu)先級第7級!=:不等于雙目運算符同上關(guān)系表達式用關(guān)系運算符將兩個表達式連接起來的式子,稱關(guān)系表達式。例如:3>2、x+y>x+z、x>y==z、z=x>y、'c'<'d'等都是關(guān)系表達式。關(guān)系表達式的值是一個邏輯值,即“真”或“假”。若關(guān)系成立,為“真”,值為“1”;若關(guān)系不成立,為“假”,值為“0”。邏輯運算符及優(yōu)先級C語言主要提供邏輯與、邏輯或、邏輯非三種邏輯運算符,具體的使用和說明如表3-1-2所示:表3-1-2邏輯運算符說明名稱說明邏輯運算符C語言提供3種邏輯運算符:“!”:邏輯非,是單目運算符,優(yōu)先級是2。例如:!3“&&”:邏輯與,是雙目運算符,優(yōu)先級是11。例如:0&&1“||”:邏輯或,是雙目運算符,優(yōu)先級是12。例如:'a'||'b'邏輯表達式用邏輯運算符將關(guān)系表達式或邏輯量(0、1)連接起來的式子就是邏輯表達式。例如:a>b&&x>y、0&&1、2||9&&0、4-!3&&'c'、'a'||'b'、3.5&&4.8等都是邏輯表達式。邏輯表達式的值邏輯表達式的值也是一個邏輯值,即“真”或“假”。為“真”,值為“1”;為“假”,值為“0”。當運算對象取不同的邏輯值時,邏輯運算真值表如表3-2所示。ab!a!ba&&ba||b110011100101011001001100運算符的優(yōu)先級C語言中,運算符的運算優(yōu)先級共分為15級。1級最高,15級最低。在表達式中,優(yōu)先級較高的先于優(yōu)先級較低的進行運算。在一個表達式中可能包含多種不同數(shù)據(jù)類型的數(shù)據(jù)及運算符,不同的運算順序可能得出不同結(jié)果甚至出現(xiàn)錯誤運算錯誤,必須按一定順序進行結(jié)合,才能保證運算的合理性以及結(jié)果的正確性、唯一性。當一個運算量兩側(cè)的運算符優(yōu)先級相同時,按運算符的結(jié)合性所規(guī)定的結(jié)合方向處理,C語言中各運算符的結(jié)合性分為兩種,即左結(jié)合性(自左至右)和右結(jié)合性(自右至左)。在程序中,運算符的優(yōu)先級如圖3-1-3所示:圖3-1-3運算符的優(yōu)先級if單分支語句格式在選擇結(jié)構(gòu)中,一般我們把滿足條件后執(zhí)行一種結(jié)果,沒有else的選擇結(jié)構(gòu)叫做單分支語句。單分支語句格式:if(表達式){語句1;語句2;…}單分支語句流程圖:根據(jù)單分支的程序,流程圖如圖3-1-4所示,其中if單分支流程圖(1)與N-S流程圖(2)圖3-1-4單分支流程圖小貼士:這種自左至右的結(jié)合方向就稱為小貼士:這種自左至右的結(jié)合方向就稱為“左結(jié)合性”。而自右至左的結(jié)合方向稱為“右結(jié)合性”。C語言運算符中有不少為右結(jié)合性,應(yīng)注意區(qū)別,以避免理解錯誤。示例1:求關(guān)系表達式的值。1#include<stdio.h>2voidmain()3{4intx=1,y=2,z=3;5printf("%d\n",3>2);6printf("%d\n",2>3);7printf("%d\n",x+y>x+z);8printf("%d\n",x>y==z);9printf("%d\n",z=x>y);10printf("%d\n",'c'<'d');11}運行截圖:圖3-1-5示例1運行截圖解析:本例題為關(guān)系表達式的應(yīng)用,第一個輸出語句為求3>2的值,關(guān)系表達式運算結(jié)果為真或假,真為1,假為0,3>2成立結(jié)果為真,即為1;第二個輸出語句求2>3的值,2>3不成立,結(jié)果為假,即為0;第三個輸出語句中算術(shù)運算符+的優(yōu)先級高于關(guān)系運算符>,先算加法,再比較大小,先求得x+y=1+2=3,x+z=1+3=4,再得到3>4的運算結(jié)果為假,即為0;第四個輸出語句中關(guān)系運算符>優(yōu)先級高于關(guān)系運算符==的優(yōu)先級,先計算x>y也就是1>2,結(jié)果為假,即為0,再比較0==3,結(jié)果為假,即為0;第五個輸出語句中關(guān)系運算符優(yōu)先級高于賦值運算符,先比較x>y,也就是1>2,結(jié)果為假,即為0,再將0賦值給z,輸出z的值為0;第六個輸出語句為比較兩個字符’c’和’d’,c的ASCⅡ碼值小于d的ASCⅡ碼值,結(jié)果為真,即為1。示例2:求邏輯表達式的值。程序代碼:1#include<stdio.h>2voidmain()3{4intx=1,y=2,a=1,b=2,c=3,d=4,m=1,n=1;//定義整型變量5printf("%d\n",0&&x||y);//輸出邏輯表達式的值6printf("%d\n",2||9&&0);7printf("%d\n",4-!3&&'c');8printf("%d,%d,%d\n",(m=a>b)&&(n=c>d),m,n);9printf("%d,%d,%d\n",(m=d>c)||(n=c>d),m,n);10}運行結(jié)果:
圖3-1-6示例2運行截圖解析:本例題為邏輯表達式的應(yīng)用,第一個輸出語句根據(jù)邏輯運算符&&優(yōu)先級高于||,先進行0&&x(x值為1),結(jié)果為0,再進行0||y(y值為2,非零值),結(jié)果為1;第二個輸出語句的求解過程同上;第三個輸出語句中邏輯非!的優(yōu)先級最高,先進行求解!3,結(jié)果為0,再進行算術(shù)運算符的求解4-0,結(jié)果為4,最后4&&‘c’,兩個非零值進行邏輯與,結(jié)果為1;第四個輸出語句中按照從左到右的次序輸出,先進行關(guān)系運算a>b,將結(jié)果0賦值給m,但是由于0&&任意值均為0,所以后面部分不用再進行計算,直接輸出表達式的值,所以表達式為0,m的值為0,n的值沒有計算保持原始數(shù)據(jù)1,因此輸出結(jié)果為0,0,1;第五個輸出語句的求解過程同第四個。說明:C語言里由“&&”、“||”構(gòu)成的邏輯表達式在某些情況下會產(chǎn)生“短路”現(xiàn)象。如:a&&b&&c只要a為假,就不必判別b和c;如果a為真、b為假,就不必判別c。再如:a||b||c只要a為真(非0),就不必判別b和c;只有a為假,才判別b;只有a和b都為假,才判別c。示例3:任意輸入三個數(shù)a,b,c,求三個數(shù)中最大數(shù)max。算法:1.定義變量2.輸入變量3.比較并輸出流程圖如下圖3-1-7所示:程序代碼voidmain(){intnum_a,num_b,num_c,max;printf("請輸入三個數(shù)據(jù)");max=num_a;if(max<num_b)max=num_b;if(max<num_c)max=num_c;printf("最大值為%c",max);}圖3-1-7示例3流程圖3.1.3典型案例典型案例1:對純電動客車可以通過剩余電池容量查詢其續(xù)航里程,從鍵盤輸入電池容量(27)千瓦時,顯現(xiàn)它的續(xù)航里程為200km。(變量:電池容量batterycapacity,續(xù)航里程limitedmileage)算法分析:1.定義變量電池容量battery_capacity,續(xù)航里程limited_mileage2.輸入電池容量3.判別顯示4.輸出典型案例1流程圖如圖3-1-8所示:圖3-1-8典型案例1流程圖程序代碼#include"stdio.h"voidmain(){ doublebattery_capacity,limited_mileage; printf("請輸入電池容量"); scanf("%lf",&battery_capacity); if(battery_capacity==27) {limited_mileage=200; printf("續(xù)航里程為%lf",limited_mileage); }}典型案例1運行截圖如圖3-1-9所示:圖3-1-9典型案例1運行截圖典型案例2:對純電動客車可以通過續(xù)航里程查詢其所需要的電池容量,要求從鍵盤輸入汽車需要的續(xù)航里程(如果大于等于550km),輸出此時對應(yīng)的電池容量為80千瓦時。(變量:續(xù)航里程imited_mileage電池容量battery_capacity,l)算法分析:定義變量輸入續(xù)航里程判斷輸出電池容量典型案例2流程圖如圖3-1-10所示:圖3-1-10典型案例2流程圖程序代碼:#include"stdio.h"voidmain(){doublebattery_capacity,limited_mileage;printf("請輸入續(xù)航里程為");scanf("%lf",&limited_mileage);if(limited_mileage>=550){battery_capacity=80;printf("電池容量為%lf",battery_capacity);}}典型案例2運行截圖如圖3-1-11所示:圖3-1-11典型案例2運行截圖典型案例3:從鍵盤輸入汽車駕駛員的駕照類型,如果類型A,輸出準駕車型為大客車。(變量:駕照類型Type_of_driving_license)算法分析:定義變量輸入駕照類型判斷輸出駕照類型典型案例3流程圖如圖3-1-12所示:圖3-1-12典型案例3流程圖程序代碼#include"stdio.h"voidmain(){ charType_of_driving_license; printf("請輸入駕照類型:"); scanf("%c",&Type_of_driving_license); if(Type_of_driving_license=='A') { printf("準駕車型為大客車",Type_of_driving_license); }}典型案例3運行截圖如圖3-1-13所示:圖3-1-13典型案例3運行截圖3.1.4任務(wù)分析與實踐算法分析:定義變量輸入電池型號判別如果值為1,顯示使用鉛酸電池任務(wù)目標流程圖如圖3-1-14所示:圖3-1-14任務(wù)目標流程圖程序代碼:#include"stdio.h"voidmain(){intbattery_type;printf("請輸入新能源汽車的電池型號");scanf("%d",&battery_type);if(battery_type==1)printf("使用鉛酸電池");}3.1.5動手練習1.編寫程序,某公交公司規(guī)定駕齡5年及其以上的駕駛員可以開長途客車,駕齡小于5年的駕駛員可以開短途客車(參考變量:駕齡driving_age)。2.編寫程序,某4S店招聘實習生規(guī)定,當年齡大于或等于18歲時,可以實習。當年齡小于18歲時,不可以實習(參考變量:年齡age)。3.某市地鐵的收費規(guī)則是根據(jù)所坐的兩點間最短站點個數(shù)計算的。當站點個數(shù)不超過4個時,收費金額為4元;當站點個數(shù)為5~8個時,收費金額為6元;當站點個數(shù)超過8
個時,收費金額8元。編寫程序,輸入站點個數(shù),輸出乘坐地鐵所需的費用(參考變量:站點個數(shù)the_number_of_stations、金額money)。課題任務(wù)3.2判斷車輛是否存在故障(雙分支)課型講練授課班級授課時數(shù)2教學目標掌握if語句的雙分支語法結(jié)構(gòu)教學重點if語句的雙分支的具體應(yīng)用。教學難點關(guān)系運算符和邏輯運算符具體運用。學情分析上一節(jié)課已經(jīng)學習了if選擇結(jié)構(gòu)的單分支結(jié)構(gòu)。本節(jié)課繼續(xù)來講雙分支結(jié)構(gòu)。需要重點區(qū)分單分支和雙分支的區(qū)別。教學效果教后記任務(wù)3.2判斷車輛是否存在故障(雙分支)3.2.1任務(wù)目標根據(jù)新能源車輛數(shù)據(jù)采集時間判斷新能源汽車數(shù)據(jù)采集是否正常,大于30秒,提示數(shù)據(jù)采集正常,小于30秒提示采集樣本太少。任務(wù)目標運行截圖如圖3-2-1所示:圖3-2-1任務(wù)目標截圖3.2.2知識儲備當我們出現(xiàn)判斷問題為真需要一個結(jié)果,為假也需要一個結(jié)果時,我們就需要用到選擇結(jié)果的雙分支結(jié)構(gòu)。1.if雙分支語句格式if(表達式){語句塊1;}else{語句塊2;}根據(jù)雙分支結(jié)構(gòu)的程序格式,流程圖如圖3-2-2所示,N-S流程圖(有時也稱為框圖)如圖3-2-3所示。圖3-2-2選擇流程圖圖3-2-3N-S圖說明:if雙分支語句的條件表達式進行判斷,條件表達式為真時,執(zhí)行語句1或者語句塊1的內(nèi)容;否則,條件表達式為假時,執(zhí)行語句2或者語句塊2的內(nèi)容。1.示例:求絕對值程序問題。根據(jù)程序要求流程圖如圖3-2-4所示:圖3-2-4示例1流程圖程序代碼#include"stdio.h"voidmain(){intx,y;printf("請輸入x的值");scanf("%d",&x);if(x>=0)y=x;elsey=-x;printf("y的值為%d",y);}該程序兩種運行結(jié)果如下圖3-2-5所示:圖3-2-5示例運行結(jié)果圖3.2.3典型案例典型案例1:在車輛故障診斷系統(tǒng)中當車輛發(fā)生故障時,需要及時發(fā)出警告,從鍵盤輸入車輛故障類型(如果等于1),顯示存在故障,否則顯示無故障。(變量:故障類型FaultType)算法分析:1.定義變量2.輸入故障類型3.判別并輸出(雙分支)典型案例1流程圖如圖3-2-6所示:圖3-2-6典型案例1流程圖程序代碼:#include"stdio.h"voidmain(){ intFaultType;printf("請輸入車輛故障類型:");scanf("%d",&FaultType);if(FaultType==1){ printf("該車輛存在故障");}else{printf("該車輛無故障");}}典型案例1一種運行結(jié)果如圖3-2-7所示:圖3-2-7典型案例1運行結(jié)果圖典型案例2:當汽車的剩余電量低于0.2時,汽車會發(fā)出電池不足預警,從鍵盤輸入剩余電量,當小于等于0.2時,顯示電量不足需要充電,否則顯示電量充足,不須充電。(變量:剩余電量residual_battery)算法分析:定義變量輸入剩余變量的值if(剩余電量<=0.2)輸出電量不足需要充電else輸出電量充足典型案例2流程圖如圖3-2-8所示:圖3-2-8典型案例2流程圖程序代碼:#include"stdio.h"voidmain(){doubleresidual_battery;printf("請從鍵盤輸入汽車電池剩余電量:");scanf("%lf",&residual_battery);if(residual_battery<=0.2){ printf("電量不足,需要充電");}else{ printf("電量充足,不需充電");}}典型案例2運行截圖如圖3-2-9所示:圖3-2-9典型案例2運行結(jié)果圖典型案例3:公交公司對駕駛員及其準駕車型進行管理,對于某型號的大客車,通過鍵盤輸入汽車駕駛員的駕照類型,如果類型為A,輸入可以駕駛該型大客車,否則顯示駕照和汽車登記不符,請更換駕駛員。(變量:駕照類型Type_of_driving_license)算法分析:定義駕駛類型輸入駕駛類型if(駕照類型等于A)顯示可以駕駛該型大客車。else顯示駕照和汽車登記不符,請更換駕駛員。典型案例3流程圖如圖3-2-10所示:圖3-2-10典型案例3流程圖程序代碼:#include"stdio.h"voidmain(){charType_of_driving_license;printf("請從鍵盤輸入汽車駕駛員的駕照類型:");scanf("%C",&Type_of_driving_license);if(Type_of_driving_license=='A'){ printf("可以駕駛該型大客車");}else{ printf("駕照和汽車登記不符,請更換駕駛員");}}典型案例3其中一種的運行截圖如圖3-2-11所示:圖3-2-11典型案例3運行截圖3.2.4任務(wù)分析與實踐算法分析:定義采集時間輸入采集時間if(采集時間)=30)顯示樣本采集正常else顯示采集樣本太少任務(wù)目標流程圖如圖3-2-12所示:圖3-2-12任務(wù)目標流程圖程序代碼:#include"stdio.h"voidmain(){intcollected_time;printf("請從鍵盤輸入新能源車輛數(shù)據(jù)采集時間:");scanf("%d",&collected_time);if(collected_time>=30){ printf("數(shù)據(jù)采集正常");}else{ printf("采集樣本太少");}}3.2.5動手練習1.在某個公交公司,規(guī)定當駕齡5年及以上可以開長途,當駕齡低于5年的時候,可以開短途。(參考變量駕齡driving_age
)2.在某個4S店招實習生,規(guī)定當年齡大于等于18歲時,可以實習。當年齡低于18歲時,不可以實習。(參考變量年齡age
)3.某市坐地鐵的費用是根據(jù)所坐的兩點間最短站點個數(shù)計算機費用,當站點個數(shù)不超過4個時,費用4元,當站點個數(shù)5-8個時6元,當站點個數(shù)超過8個時8元,輸入站點個數(shù)輸出所需費用。分析此程序是否可以采用雙分支結(jié)構(gòu),為什么?4.判別某一年year是否閏年。閏年的條件是符合下面二者之一:能被4整除,但不能被100整除。能被4整除,又能被400整除。(參考變量年year)課題任務(wù)3.3判斷車輛的故障等級(多分支)課型講練授課班級授課時數(shù)2教學目標if語句嵌套格式在程序中的應(yīng)用關(guān)系運算符和邏輯運算符具體運用教學重點if語句的具體應(yīng)用。軟件開發(fā)方法的運用。教學難點使用if語句嵌套格式對具體問題的算法描述。if-else-if語句關(guān)系運算符和邏輯運算符具體運用。學情分析if語句前面已經(jīng)講過,簡單if-else的結(jié)構(gòu)學生基本掌握,本節(jié)主要內(nèi)容是復雜選擇結(jié)構(gòu),關(guān)鍵是要學生要分清if-else如何搭配。教學效果教后記任務(wù)3.3判斷車輛的故障等級(多分支)3.3.1任務(wù)目標根據(jù)新能源汽車電量的使用程度進行顯示,100%顯示為充滿狀態(tài),80%以上顯示為良好狀態(tài),50%顯示充足狀態(tài),20%顯示正常狀態(tài),20%以下顯示缺電狀態(tài),0%顯示無電量,無法行駛狀態(tài)。從鍵盤輸入電量,輸出狀態(tài)。(變量:剩余電量占比residual_battery_proportion)任務(wù)目標運行截圖如圖3-3-1所示:圖3-3-1任務(wù)目標截圖3.3.2知識儲備當我們碰到判斷后有3個及以上結(jié)果時,我們就需要考慮使用多分支結(jié)構(gòu)來解決遇到的問題。1.if多分支格式:if(表達式1)語句1;elseif(表達式2)語句2;…elseif(表達式n)語句n;[else語句n+1;]語句執(zhí)行過程:如果表達式1為真,執(zhí)行語句1;如果表達式1為假,而表達式2為真,執(zhí)行語句2;以此類推,如果表達式1,…,表達式n-1均為假,而表達式n為真,則執(zhí)行語句n;如果表達式1,…,表達式n均為假,則執(zhí)行語句n+1。多分支流程圖如圖3-3-2所示。圖3-3-2多分支流程圖2.示例:從鍵盤輸入考試分數(shù)mark,若按分數(shù)值mark,將考試成績分成“優(yōu)秀”(90—100)、“良好”(80—90)、“及格”(60—80)、“不及格”(60以下)等多個等級,又該如何解決呢?示例2流程圖如圖3-3-3所示:圖3-3-3示例1流程圖方法一:運用單分支方式示例1的流程圖如圖3-3-4所示:圖3-3-4示例1單分支流程圖程序代碼#include"stdio.h"voidmain(){intmark;printf(“請輸入成績:”);scanf(“%d”,&mark);if(mark>=90)printf(“優(yōu)秀!”);if(mark>=80&&mark<=90)printf(“良好!”);if(mark>=60&&mark<=80)printf(“及格!”);if(mark<60)printf(“不及格!”);}方法二:運用多分支方式示例2的流程圖如圖3-3-5所示:圖3-3-5示例2多分支流程圖程序代碼:#include”stdio.h”voidmain(){intmark;printf(“請輸入成績:”);scanf(“%d”,&mark);if(mark>=90)printf(“優(yōu)秀!”);elseif(mark>=80)printf(“良好!”);elseif(mark>=60)printf(“及格!”);elseprintf(“不及格!”);}3.3.3典型案例典型案例1:汽車故障診斷應(yīng)用中將車輛故障等級分為4級:0,正常;1,一級故障/嚴重故障,停機處理;2,二級故障/輕微故障,限定功率;3,三級故障/警告提醒。依據(jù)輸入的故障等級,輸出相應(yīng)的處理模式,如輸入1顯示“一級故障/嚴重故障,停機處理”。(變量:故障等級faultlevel)算法分析定義等級變量輸入等級if(等級=0)顯示正常elseif(等級=1)顯示一級故障/嚴重故障,停機處理elseif(等級=2)顯示二級故障/輕微故障,限定功率elseif(等級=3)顯示三級故障/警告提醒else顯示輸入有誤典型案例1流程圖如圖3-3-6所示:圖3-3-6典型案例1流程圖程序代碼:#include"stdio.h"voidmain(){intFault_level;printf("輸入你的事故等級(數(shù)字):\n");scanf("%d",&Fault_level); if(Fault_level==0)printf("正常\n"); elseif(Fault_level==1)printf("一級故障/嚴重故障,停機處理;\n");elseif(Fault_level==2)printf("二級故障/輕微故障,限定功率;\n");elseif(Fault_level==3)printf("三級故障/警告提醒。\n");elseprintf("輸入錯誤,請重新輸入\n");}典型案例1運行截圖如圖3-3-7所示:圖3-3-7典型案例1截圖典型案例2:駕駛員考試在科目三考試時,主要考察擋位和車速是否匹配,假設(shè)車速為0時,使用0擋,低于15km/h使用一擋,車速在15-30km/h時使用二擋,車速在30-40km/h時使用三擋,車速在40-60km/h時使用四擋,車速在60km/h以上使用五擋。通過鍵盤輸入車速,輸出汽車相應(yīng)的擋位。(變量:車速speed)算法分析:定義車速輸入車速多分支判斷if(車速<0)顯示輸入有誤。elseif(車速=0)顯示使用0擋。elseif(車速<15)顯示使用1擋。elseif(車速<30)顯示使用2擋。elseif(車速<40)顯示使用3擋。elseif(車速<60)顯示使用4擋else顯示使用5擋。典型案例2流程圖如圖3-3-8所示:圖3-3-8典型案例2流程圖程序代碼:#include"stdio.h"voidmain(){floatspeed;printf("輸入你的車速(km):\n");scanf("%f",&speed);if(speed<0)printf("輸入有誤"); elseif(speed==0)printf("零檔\n"); elseif(speed<15)printf("一擋\n"); elseif(speed<30)printf("二擋\n"); elseif(speed<40)printf("三擋\n");elseif(speed<60)printf("四擋\n");elseprintf("五擋\n");}典型案例2運行截圖如圖3-3-9所示:圖3-3-9典型案例2運行截圖典型案例3:某4S店的二手車分為五個等級,A級(準新車)、B級(精品車)、C級(小瑕疵車)、D級(大事故車)。輸入等級,輸出車輛類型。(參考變量等級grade)算法分析:定義等級輸入等級運用多分支判別if(等級=A)輸出準新車elseif(等級=B)輸出精品車elseif(等級=C)輸出小瑕疵車elseif(等級=D)輸出大事故車else輸出輸入有誤典型案例3流程圖如圖3-3-10所示:圖3-3-10典型案例3流程圖程序代碼:#include"stdio.h"voidmain(){chargrade;printf("輸入你的車型:\n");scanf("%c",&grade); if(grade=='A'){ printf("準新車\n");}elseif(grade='B'){ printf("精品車\n");}elseif(grade=='C'){ printf("小瑕疵車\n");}elseif(grade=='D'){ printf("大事故車\n");}elseprintf("輸入有誤");}典型案例3運行截圖如圖3-3-11所示:
圖3-3-11典型案例3運行截圖小貼士:單個小貼士:單個字符使用時,注意添加單引號典型案例4:駕駛員準駕車輛和獲得的駕駛證對應(yīng),下面是列舉的幾種駕照和相應(yīng)車型的關(guān)系A(chǔ)1:大型客車——大型客車是指車長大于等于6米或者核定載客人數(shù)大于等于20人的載客汽車。A2:牽引車——牽引車采用電動機驅(qū)動,利用其牽引能力(2.0~8.0噸),后面拉動幾個裝載貨物的小車。A3:城市公交車——泛指指城市范圍內(nèi)定線運營的公共汽車及軌道交通等交通方式。B1:中型客車——車長小于6米且核定載客人數(shù)(含司機)10座(含)以上,19座(含)以下的客運車輛稱為中型客車。B2:大型貨車——大型貨車指重型和中型載貨汽車。重型載貨汽車車長大于等于6m,總質(zhì)量大于等于12000kg。中型載貨汽車車長大于等于6m,總質(zhì)量大于等于4500kg且小于12000kg。C1:小型汽車——總質(zhì)量不超過4.5t、乘坐人數(shù)(包括駕駛員)不超過9人或車長6m以下的汽車。C2:小型自動擋汽車。通過鍵盤輸入駕駛證的類型輸出準駕車型。(變量:駕駛證類型Typeofdrivinglicense)算法分析:1.定義車型2.輸入車型3.運用多分支判別if(車型=A1)輸出大型客車內(nèi)容elseif(車型=A2)輸出牽引車內(nèi)容elseif(車型=A3)輸出城市公交車內(nèi)容elseif(車型=B1)輸出中型客車elseif(車型=B2)輸出大型貨車elseif(車型=C1)輸出小型汽車elseif(車型=C2)輸出小型自動擋汽車else輸出輸入有誤典型案例4流程圖如圖3-3-12所示:圖3-3-12典型案例4流程圖程序代碼:#include"stdio.h"#include"string.h"voidmain(){charTypeofdrivinglicense[3];printf("輸入你的車型:\n");scanf("%s",&Typeofdrivinglicense); if(strcmp(Typeofdrivinglicense,"A1")==0){ printf("大型客車--大型客車是指車長大于等于6米或者核定載客人數(shù)大于等于20人的載客汽車。\n");}elseif(strcmp(Typeofdrivinglicense,"A2")==0){ printf("牽引車--牽引車采用電動機驅(qū)動,利用其牽引能力(2.0~8.0噸),后面拉動幾個裝載貨物的小車\n");}elseif(strcmp(Typeofdrivinglicense,"A3")==0){ printf("城市公交車--泛指指城市范圍內(nèi)定線運營的公共汽車及軌道交通等交通方式。\n");}elseif(strcmp(Typeofdrivinglicense,"B1")==0){ printf("中型客車--車長小于6米且核定載客人數(shù)(含司機)10座(含)以上,19座(含)以下的客運車輛稱為中型客車。\n");}elseif(strcmp(Typeofdrivinglicense,"B2")==0){ printf("大型貨車--大型貨車指重型和中型載貨汽車。重型載貨汽車車長大于等于6m,總質(zhì)量大于等于12000kg。中型載貨汽車車長大于等于6m,總質(zhì)量大于等于4500kg且小于12000kg。\n");}elseif(strcmp(Typeofdrivinglicense,"C1")==0){ printf("小型汽車--總質(zhì)量不超過4.5t、乘坐人數(shù)(包括駕駛員)不超過9人或車長6m以下的汽車。\n");}elseif(strcmp(Typeofdrivinglicense,"C2")==0){ printf("小型自動擋汽車。\n");}elseprintf("輸入有誤");}典型案例3運行截圖如圖3-3-12所示:圖3-3-12典型案例4運行截圖3.3.4任務(wù)分析與實踐算法分析:定義電量狀態(tài)輸入電量狀態(tài)多分支判別if(電量<0)輸出輸入有誤elseif(電量=0)任務(wù)目標流程圖如圖3-3-13所示圖3-3-13任務(wù)目標流程圖程序代碼:#include"stdio.h"intmain(){intRap;printf("輸入你的電量狀態(tài)(占比數(shù)字):\n");scanf("%d",&Rap);if(Rap<0)printf("輸入有誤");elseif(Rap==0){ printf("無電量,無法行駛狀態(tài)。\n");} elseif(Rap<20){ printf("缺電狀態(tài)\n");}elseif(Rap<50){ printf("正常狀態(tài)\n");}elseif(Rap<80){ printf("充足狀態(tài)\n");}elseif(Rap<100){ printf("良好狀態(tài)\n");}else{ printf("充滿狀態(tài)\n");}}3.3.5動手練習1.駕駛員目前當要檢查他的身體情況。設(shè)計一個健康秤的程序,從鍵盤輸入身高,體重,判斷某人的健康狀況。計算公式為:標準體重=身高-105;體重高于標準體重*1.1為偏胖,提示“偏胖,注意節(jié)食”;體重低于標準體重*0.9為偏瘦,提示“偏瘦,增加營養(yǎng)”;其他為正常,提示“正常,繼續(xù)保持”。(參考變量身高H,體重T,標準體重standardweight)2.駕駛員的工資是根據(jù)他的工齡來的。當他的駕齡是在1-5年的時候呢,工資為3200元。當他的駕齡為5-10年的時候,他的工資為4500元。當他的駕齡為十年以上時,他的基本工資為6000元。編寫程序,從鍵盤輸入工齡求基本工資。(參考變量工齡lengthofservice)3.汽車顯示屏需要顯示目前是星期幾的英文,從鍵盤輸入數(shù)字,顯示1-7對應(yīng)的英文。其它數(shù)字顯示輸入錯誤。(參考變量數(shù)字digit)4.駕駛員到年底的需要提交個稅,目前個稅稅率表表3-3-1所示,例如工資為30010元,那么稅費就是3000*0.03+9000*0.1+13000*0.2+10*0.25。編寫程序,完成程序。(參考變量工資salary,稅率taxrate)表3-3-1\o"個稅"個稅稅率表工資稅率1-5000元之間的,包括5000元0%5000-8000元之間的,包括8000元3%8000-17000元之間的,包括17000元10%17000-30000元之間的,包括30000元20%30000-40000元之間的,包括40000元25%40000-60000元之間的,包括60000元30%60000-85000元之間的,包括85000元35%85000元以上的45%5.駕駛員每年都有一個等級考核,綜合測評分數(shù)在0-60(不包含60)的等級為不合格,分數(shù)在60-80(不包含90)的等級為合格,80-100的等級為優(yōu)秀。編寫程序,從鍵盤輸入綜合測評分數(shù),輸出等級。(參考變量分數(shù)grade)課題任務(wù)3.4判斷車輛的故障等級(switch)課型講練授課班級授課時數(shù)2教學目標掌握switch語句的形式特點,可以將原有的部分if-else語句改為switch語句教學重點switch語句的特點,以前的if-else語句的轉(zhuǎn)化教學難點熟練應(yīng)用switch語句學情分析學生對于分支結(jié)構(gòu)結(jié)構(gòu)已經(jīng)有所接觸,由于本學期兩個班級的學生剛剛接觸學習C語言,對于程序的學習方法還不是很熟悉,還沒有從高中的學習方法中脫離出來,因此,還需多多練習。教學效果教后記任務(wù)3.4判斷車輛的故障等級(switch)3.4.1任務(wù)目標根據(jù)新能源汽車電量的使用程度進行剩余電量提示,假設(shè)汽車電池容量的格子共有10格,10格時顯示為充滿狀態(tài),8-9格顯示為充足狀態(tài),5-7顯示正常狀態(tài),2-4顯示預警狀態(tài),1-2以顯示報警狀態(tài),0顯示無電量,無法行駛狀態(tài)。通過鍵盤輸入電池容量格子的數(shù)目,輸出剩余電量狀態(tài)。(變量:電量battery)任務(wù)目標運行截圖如圖3-4-1所示:圖3-4-1任務(wù)目標運行截圖3.4.2知識儲備switch語句也稱為開關(guān)語句,是多分支結(jié)構(gòu)的一種特殊形式。1.多分支switch語句的一般形式是:switch(表達式){case值1:語句1;[break;]case值2:語句2;[break;]…case值n:語句n;[break;]default:語句n+1;}多分支switch語句的流程如圖3-4-2所示。圖3-4-2多分支switch語句注意點(1)switch中case常量可以是數(shù)值(整數(shù)),也可以是字符,但不能為其他的值。(2)可以省略一些case和default。(3)每個case或default后的語句可以是語句體,但不需要使用"{"和"}"括起來。(4)每個case語句體的最后都應(yīng)有一個break語句。執(zhí)行switch開關(guān)語句時,將常量表達式的值逐個與case后的常量進行比較,若與其中一個相等,則執(zhí)行該常量下的語句,若不與任何一個常量相等,則執(zhí)行default后面的語句。2.示例:小麗星期日出去逛街,她發(fā)現(xiàn)自己所帶的錢不夠,因此考慮去ATM機取錢。輸入正確密碼后,ATM機會有一個顯示屏,可以查詢、取款、轉(zhuǎn)賬、退出等操作如圖3-4-3所示圖3-4-3示例運行截圖方法一:if多分支流程圖如圖3-4-4所示:圖3-4-4示例if多分支流程圖程序代碼#include"stdio.h"voidmain(){ intchoose; printf("輸入您的選項:"); scanf("%d",&choose); if(choose==1)printf("您選擇了取款服務(wù)!\n"); elseif(choose==2)printf("您選擇了查詢服務(wù)!\n"); elseif(choose==3)printf("您選擇了轉(zhuǎn)帳服務(wù)!\n"); elseif(choose==4)printf("您選擇了退出,請取卡!\n");}方法二:switch流程圖圖3-4-5示例switch多分支流程圖#include"stdio.h"voidmain(){ intchoose; printf("輸入您的選項:"); scanf("%d",&choose); switch(choose) { case1:printf("您選擇了取款服務(wù)!\n");break; case2:printf("您選擇了查詢服務(wù)!\n");break; case3:printf("您選擇了轉(zhuǎn)帳服務(wù)!\n");break; case4: printf("您選擇了退出,請取卡!\n"); }}3.4.3典型案例典型案例1:汽車故障診斷應(yīng)用中將車輛故障等級分為4級:0,正常;1,一級故障/嚴重故障,停機處理;2,二級故障/輕微故障,限定功率;3,三級故障/警告提醒。依據(jù)輸入的故障等級,輸出相應(yīng)的處理模式,如輸入1顯示“一級故障/嚴重故障,停機處理”。如果輸入其它數(shù)據(jù),則顯示輸入有誤。(變量:故障等級faultlevel)算法分析:1.定義變量2.輸入故障等級3.按照故障等級分別匹配典型案例1流程圖如圖3-4-6所示:圖3-4-6典型案例1流程圖程序代碼#include"stdio.h"voidmain(){intfaultlevel;printf("請輸入故障等級:\n");scanf("%d",&faultlevel);switch(faultlevel){case0:printf("正常\n");break;case1:printf("一級故障/嚴重故障\n");break;case2:printf("二級故障/輕微故障\n");break;case3:printf("三級故障/警告提醒\n");break;}}典型案例1運行截圖如圖3-4-7所示:圖3-4-7典型案例1運行截圖典型案例2:駕駛員可以駕駛的車輛和獲得的駕駛證存在對應(yīng)關(guān)系,下面列舉幾種駕照和車型的關(guān)系:A級:大型客車或者牽引車或者城市公交車;B級:中型客車或者大型貨車;C級:小型汽車。通過鍵盤輸入駕駛證的類型輸出可以駕駛的車型。(變量:駕駛證類型Type_of_driving_license)算法分析:1.定義變量2.輸入駕駛證類型3.輸入匹配(注意此處是字符型匹配)典型案例2流程圖如圖3-4-8所示:圖3-4-8典型案例2流程圖程序代碼#include"stdio.h"voidmain(){charType_of_driving_license;printf("請輸入駕駛證類型:\n");scanf("%c",&Type_of_driving_license);switch(Type_of_driving_license){case'A':printf("大型客車或者牽引車或者城市公交車\n");break;case'B':printf("中型客車或者大型貨車\n");break;case'C':printf("小型汽車\n");break;}}典型案例2運行截圖如圖3-4-9所示:圖3-4-9典型案例2運行截圖提問:任務(wù)3.3的典型案例2可以用switch實現(xiàn)嗎?為什么?典型案例3:正常情況下新能源汽車電池有6-8年的使用年限,當處于第1-2年時,電池質(zhì)量較好,在質(zhì)保期,當處于第3-4年時,電池質(zhì)量正常,在質(zhì)保期;當處于第5-6年時,電池里程較短,在質(zhì)保期;當處于第7-8年時,電池已過質(zhì)保期;當使用超過8年以上時,則必須更換。通過鍵盤輸入電池的使用年限,輸出相應(yīng)的電池狀態(tài)。(變量:電池年限batteryyears)算法分析:1.定義年限2.輸入年限3.根據(jù)年限判別典型案例3流程圖如圖3-4-10所示:圖3-4-10典型案例3流程圖程序代碼#include"stdio.h"voidmain(){intbatteryyears;printf("請輸入使用年限:\n");scanf("%d",&batteryyears);switch(batteryyears){case1:case2:printf("電池質(zhì)量較好,在質(zhì)保期\n");break;case3:case4:printf("電池質(zhì)量正常,在質(zhì)保期\n");break;case5:case6:printf("電池里程較短,在質(zhì)保期\n");break;case7:case8:printf("電池已過質(zhì)保期\n");break;default:printf("電池必須更換\n");break;}}典型案例3運行截圖如圖3-4-11所示:圖3-4-11典型案例3運行截圖典型案例4:機動車駕駛員考試在科目三考試時,主要考察檔位和車速是否匹配,假設(shè)車速為0-15km/h使用一檔(不包含15),車速在15-30km/h時使用二擋(不包含30),車速在30-40km/h時使用三擋(不包含40),車速在40-60km/h時使用四擋,車速在60km/h以上時使用五擋。通過鍵盤輸入車速,求車輛相應(yīng)所處的檔位。(變量:車速speed)算法分析:1.定義速度2.輸入速度3.將數(shù)據(jù)分析特點,進行對5整除。4.根據(jù)速度比例進行匹配。典型案例4流程圖如圖3-4-12所示:圖3-4-12典型案例4流程圖程序代碼:#include"stdio.h"voidmain(){doublespeed;intn;printf("請輸入車速:\n");scanf("%lf",&speed);n=(int)(speed/5);switch(n){ case0:case1: case2:printf("使用一擋\n");break; case3: case4:case5:printf("使用二擋\n");break;case6:case7:printf("使用三擋\n");break;case8:case9:case10:case11:printf("使用四擋\n");break;default:printf("使用五檔\n");break;}}典型案例4運行截圖如圖3-4-13所示:圖3-4-13典型案例4運行截圖3.4.4任務(wù)分析與實踐算法分析:1.定義剩余變量2.輸入剩余變量3.根據(jù)格子數(shù)辨別電量狀態(tài)任務(wù)目標流程圖如圖3-4-14所示:圖3-4-14任務(wù)目標流程圖#include"stdio.h"voidmain(){intbattery,n;printf("請輸入剩余電量:\n");scanf("%d",&battery);n=battery/10;switch(n){case10:printf("充滿狀態(tài)\n");break;case9:case8:printf("充足狀態(tài)\n");break;case7:case6:case5:printf("正常狀態(tài)\n");break;case4:case3:printf("預警狀態(tài)\n");break;case2:case1:printf("報警狀態(tài)\n");break;case0:printf("無電量\n");break;}}3.4.5動手練習1.汽車顯示屏需要顯示目前是星期幾的英文,從鍵盤輸入數(shù)字,顯示1-7對應(yīng)的英文。其它數(shù)字顯示輸入錯誤。(參考變量數(shù)字digit)2.駕駛員的工資是根據(jù)他的工齡來的。當他的駕齡是在1-5年的時候呢,工資為3200元。當他的駕齡為5-10年的時候,他的工資為4500元。當他的駕齡為十年以上時,他的基本工資為6000元。編寫程序,從鍵盤輸入工齡求基本工資。(參考變量工齡lengthofservice)3.學校的實訓成績一般是按照等級輸出的,其中[0-60)為不合格,[60,80)為合格,[80-90)為良好,[90-100]為優(yōu)秀。從鍵盤輸入成績,輸出等級。課題任務(wù)3.5車輛故障診斷與維修(選擇嵌套)課型講練授課班級授課時數(shù)2教學目標掌握選擇語句的嵌套結(jié)構(gòu)教學重點選擇語句的嵌套結(jié)構(gòu)教學難點選擇語句的嵌套結(jié)構(gòu)學情分析之前上課已經(jīng)完成了選擇的單分支,雙分支,多分支結(jié)構(gòu)。對于復雜的內(nèi)容,需要使用嵌套結(jié)構(gòu)。學生分析如何使用嵌套是一個難點。教學效果教后記任務(wù)3.5車輛故障診斷與維修(選擇嵌套)3.5.1任務(wù)目標當車輛出現(xiàn)故障時,可以在4S店,路邊維修店和連鎖維修店選擇維修,假設(shè)目前維修的項目是換輪胎,路邊維修店里每個輪胎的價格是500,2個及以上可以打7折;連鎖維修店的價格是550,2個及以上可以打8折;4s店維修店的價格是650,2個及以上可以打9折。通過鍵盤輸入維修地點和輪胎個數(shù),求維修的價格。(變量:維修地點repairlocation,輪胎價格tireprice,折扣discount)任務(wù)目標運行截圖如圖3-5-1所示:圖3-5-1任務(wù)目標運行截圖3.5.2知識儲備有時我們遇到問題需要考慮多種情況的條件,這時就不得不在選擇結(jié)構(gòu)中再包含選擇結(jié)構(gòu)。1.if語句的嵌套在if語句中又包含一個或多個if語句,稱if語句的嵌套。if語句的嵌套常見形式如圖所示。圖3-5-2if語句的嵌套2.示例有以下程序#include<stdio.h>voidmain(){inta=2,b=7,c=5;switch(a){case1:switch(b){case1:printf("@");break;case2:printf("!");break;}break;case0:switch(c){case0:printf("*");break;case1:printf("#");break;case2:printf("$");break;}break;default:printf("&");}printf("\n");}程序的運行結(jié)果是__&___分析:首先判別a的值,根據(jù)a的值再判別其它情況。如果a=1結(jié)果等于是什么?3.5.3典型案例典型案例1:新能源電動車充電時,可以選擇快充和慢充兩種方式。快充時,如果需要充電電量不超過80%,則30分鐘即可完成,充電超過80%后需要的時間每1%需要10分鐘。慢充時,每1%需要8分鐘。從鍵盤輸入充電方式和需要充的電量。(變量:充電方式recharge_mode,需求電量required_battery)算法分析1.定義變量2.輸入充電方式和需求電量3.先考慮充電方式再根據(jù)需求電量判別典型案例1流程圖如圖3-5-2所示:圖3-5-2典型案例1流程圖程序代碼:#include"stdio.h"voidmain(){intrecharge_mode,required_battery,time;printf("1:快充\t2:慢充\n\n");printf("請選擇充電方式:(輸入對應(yīng)方式前的數(shù)字)\n");scanf("%d",&recharge_mode);printf("請輸入需求電量:\n");scanf("%d",&required_battery);switch(recharge_mode){ case1:if(required_battery>80) time=30+(required_bat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 九年級歷史下冊單元評價檢測課件
- 《證劵基礎(chǔ)知識最終》課件
- 《激光切割工藝》課件
- 荒山綠化項目可行性研究報告
- 《人力資源管理奧秘》課件
- 股份解禁協(xié)議三篇
- 專業(yè)畢業(yè)實習報告4篇
- 2023年-2024年企業(yè)主要負責人安全教育培訓試題及答案(易錯題)
- 2024員工三級安全培訓考試題帶解析答案可打印
- 2023年-2024年項目部安全管理人員安全培訓考試題附答案【培優(yōu)A卷】
- JJF 1638-2017 多功能標準源校準規(guī)范-(高清現(xiàn)行)
- 工業(yè)工程技術(shù)學生專業(yè)技能考核標準(高職)(高職)
- 生物化學期末考試題庫與答案
- 山東昌樂二中的“271高效課堂”
- 人教版高中物理新舊教材知識對比
- 國際結(jié)算期末復習試卷5套及參考答案
- 六年級上冊數(shù)學圓中方方中圓經(jīng)典題練習
- 現(xiàn)場組織機構(gòu)框圖及說明
- 《城鎮(zhèn)燃氣管理條例》解讀
- X62W萬能銑床電氣原理圖解析(共18頁)
- 小康煤礦水文地質(zhì)類型劃分報告
評論
0/150
提交評論