版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE课题项目三任务1新能源汽车电池组的选择(单分支)课型讲练授课班级授课时数1教学目标灵活运用关系及逻辑运算符;if语句的单分支语法结构教学重点if语句的具体应用。教学难点关系运算符和逻辑运算符具体运用。学情分析对于C语言语法知识的讲解,容易理解,重点在于培养学生良好的编程习惯及编程规范,其二是培养学生的探究式自学能力,调试程序的能力。因而重点是语法知识的掌握,逐步过渡到培养学生良好的编程习惯及编程规范。教学效果教后记项目三任务1新能源汽车电池组的选择(单分支)3.1.1任务目标通过键盘输入新能源汽车的电池型号,如果输入1则输出使用铅酸电池。(变量:电池型号batterytype)任务目标运行截图如图3-1-1所示:图3-1-1任务目标截图3.1.2知识储备在日常生活中,总会出现根据条件来判定结果的情况。在程序中,我们将这种情况采用选择结构。if语句的格式格式:if(条件)语句组1;[else语句组2;]说明:[]格式代表可有可无,在实际使用[]中的内容也可以不写。C语言的选择结构是通过条件判断语句来实现的,模块化的结构便于阅读、调试和修改。选择结构有两种方式来实现:由if语句来实现的两分支语句;由switch语句来实现的多分支语句。在选择结构中要对条件判断表达式进行判断,根据判断的结果决定选择哪一个分支路径,条件判断表达式大多情况下是由关系表达式或者逻辑表达式构成。选择结构的三种流程图如图3-1-2所示,其中(1)为单分支结构,(2)为双分支结构,(3)为多分支结构。图3-1-2选择结构的三种流程图1.关系运算符及优先顺序关系运算符:<、<=、>、>=、==、!=,分别称之为:小于、小于等于、大于、大于等于、等于、不等于。关系运算符,关系表达式等的说明如表3-1-1所示:表3-1-1关系运算符等的说明名称说明关系运算符系统提供了六种关系运算符<:小于双目运算符优先级第6级<=:小于等于双目运算符同上>:大于双目运算符同上>=:大于等于双目运算符同上==:等于双目运算符优先级第7级!=:不等于双目运算符同上关系表达式用关系运算符将两个表达式连接起来的式子,称关系表达式。例如:3>2、x+y>x+z、x>y==z、z=x>y、'c'<'d'等都是关系表达式。关系表达式的值是一个逻辑值,即“真”或“假”。若关系成立,为“真”,值为“1”;若关系不成立,为“假”,值为“0”。逻辑运算符及优先级C语言主要提供逻辑与、逻辑或、逻辑非三种逻辑运算符,具体的使用和说明如表3-1-2所示:表3-1-2逻辑运算符说明名称说明逻辑运算符C语言提供3种逻辑运算符:“!”:逻辑非,是单目运算符,优先级是2。例如:!3“&&”:逻辑与,是双目运算符,优先级是11。例如:0&&1“||”:逻辑或,是双目运算符,优先级是12。例如:'a'||'b'逻辑表达式用逻辑运算符将关系表达式或逻辑量(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运算符的优先级C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。在一个表达式中可能包含多种不同数据类型的数据及运算符,不同的运算顺序可能得出不同结果甚至出现错误运算错误,必须按一定顺序进行结合,才能保证运算的合理性以及结果的正确性、唯一性。当一个运算量两侧的运算符优先级相同时,按运算符的结合性所规定的结合方向处理,C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。在程序中,运算符的优先级如图3-1-3所示:图3-1-3运算符的优先级if单分支语句格式在选择结构中,一般我们把满足条件后执行一种结果,没有else的选择结构叫做单分支语句。单分支语句格式:if(表达式){语句1;语句2;…}单分支语句流程图:根据单分支的程序,流程图如图3-1-4所示,其中if单分支流程图(1)与N-S流程图(2)图3-1-4单分支流程图小贴士:这种自左至右的结合方向就称为小贴士:这种自左至右的结合方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。示例1:求关系表达式的值。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运行截图解析:本例题为关系表达式的应用,第一个输出语句为求3>2的值,关系表达式运算结果为真或假,真为1,假为0,3>2成立结果为真,即为1;第二个输出语句求2>3的值,2>3不成立,结果为假,即为0;第三个输出语句中算术运算符+的优先级高于关系运算符>,先算加法,再比较大小,先求得x+y=1+2=3,x+z=1+3=4,再得到3>4的运算结果为假,即为0;第四个输出语句中关系运算符>优先级高于关系运算符==的优先级,先计算x>y也就是1>2,结果为假,即为0,再比较0==3,结果为假,即为0;第五个输出语句中关系运算符优先级高于赋值运算符,先比较x>y,也就是1>2,结果为假,即为0,再将0赋值给z,输出z的值为0;第六个输出语句为比较两个字符’c’和’d’,c的ASCⅡ码值小于d的ASCⅡ码值,结果为真,即为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}运行结果:
图3-1-6示例2运行截图解析:本例题为逻辑表达式的应用,第一个输出语句根据逻辑运算符&&优先级高于||,先进行0&&x(x值为1),结果为0,再进行0||y(y值为2,非零值),结果为1;第二个输出语句的求解过程同上;第三个输出语句中逻辑非!的优先级最高,先进行求解!3,结果为0,再进行算术运算符的求解4-0,结果为4,最后4&&‘c’,两个非零值进行逻辑与,结果为1;第四个输出语句中按照从左到右的次序输出,先进行关系运算a>b,将结果0赋值给m,但是由于0&&任意值均为0,所以后面部分不用再进行计算,直接输出表达式的值,所以表达式为0,m的值为0,n的值没有计算保持原始数据1,因此输出结果为0,0,1;第五个输出语句的求解过程同第四个。说明:C语言里由“&&”、“||”构成的逻辑表达式在某些情况下会产生“短路”现象。如:a&&b&&c只要a为假,就不必判别b和c;如果a为真、b为假,就不必判别c。再如:a||b||c只要a为真(非0),就不必判别b和c;只有a为假,才判别b;只有a和b都为假,才判别c。示例3:任意输入三个数a,b,c,求三个数中最大数max。算法:1.定义变量2.输入变量3.比较并输出流程图如下图3-1-7所示:程序代码voidmain(){intnum_a,num_b,num_c,max;printf("请输入三个数据");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:对纯电动客车可以通过剩余电池容量查询其续航里程,从键盘输入电池容量(27)千瓦时,显现它的续航里程为200km。(变量:电池容量batterycapacity,续航里程limitedmileage)算法分析:1.定义变量电池容量battery_capacity,续航里程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("续航里程为%lf",limited_mileage); }}典型案例1运行截图如图3-1-9所示:图3-1-9典型案例1运行截图典型案例2:对纯电动客车可以通过续航里程查询其所需要的电池容量,要求从键盘输入汽车需要的续航里程(如果大于等于550km),输出此时对应的电池容量为80千瓦时。(变量:续航里程imited_mileage电池容量battery_capacity,l)算法分析:定义变量输入续航里程判断输出电池容量典型案例2流程图如图3-1-10所示:图3-1-10典型案例2流程图程序代码:#include"stdio.h"voidmain(){doublebattery_capacity,limited_mileage;printf("请输入续航里程为");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任务分析与实践算法分析:定义变量输入电池型号判别如果值为1,显示使用铅酸电池任务目标流程图如图3-1-14所示:图3-1-14任务目标流程图程序代码:#include"stdio.h"voidmain(){intbattery_type;printf("请输入新能源汽车的电池型号");scanf("%d",&battery_type);if(battery_type==1)printf("使用铅酸电池");}3.1.5动手练习1.编写程序,某公交公司规定驾龄5年及其以上的驾驶员可以开长途客车,驾龄小于5年的驾驶员可以开短途客车(参考变量:驾龄driving_age)。2.编写程序,某4S店招聘实习生规定,当年龄大于或等于18岁时,可以实习。当年龄小于18岁时,不可以实习(参考变量:年龄age)。3.某市地铁的收费规则是根据所坐的两点间最短站点个数计算的。当站点个数不超过4个时,收费金额为4元;当站点个数为5~8个时,收费金额为6元;当站点个数超过8
个时,收费金额8元。编写程序,输入站点个数,输出乘坐地铁所需的费用(参考变量:站点个数the_number_of_stations、金额money)。课题任务3.2判断车辆是否存在故障(双分支)课型讲练授课班级授课时数2教学目标掌握if语句的双分支语法结构教学重点if语句的双分支的具体应用。教学难点关系运算符和逻辑运算符具体运用。学情分析上一节课已经学习了if选择结构的单分支结构。本节课继续来讲双分支结构。需要重点区分单分支和双分支的区别。教学效果教后记任务3.2判断车辆是否存在故障(双分支)3.2.1任务目标根据新能源车辆数据采集时间判断新能源汽车数据采集是否正常,大于30秒,提示数据采集正常,小于30秒提示采集样本太少。任务目标运行截图如图3-2-1所示:图3-2-1任务目标截图3.2.2知识储备当我们出现判断问题为真需要一个结果,为假也需要一个结果时,我们就需要用到选择结果的双分支结构。1.if双分支语句格式if(表达式){语句块1;}else{语句块2;}根据双分支结构的程序格式,流程图如图3-2-2所示,N-S流程图(有时也称为框图)如图3-2-3所示。图3-2-2选择流程图图3-2-3N-S图说明:if双分支语句的条件表达式进行判断,条件表达式为真时,执行语句1或者语句块1的内容;否则,条件表达式为假时,执行语句2或者语句块2的内容。1.示例:求绝对值程序问题。根据程序要求流程图如图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);}该程序两种运行结果如下图3-2-5所示:图3-2-5示例运行结果图3.2.3典型案例典型案例1:在车辆故障诊断系统中当车辆发生故障时,需要及时发出警告,从键盘输入车辆故障类型(如果等于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一种运行结果如图3-2-7所示:图3-2-7典型案例1运行结果图典型案例2:当汽车的剩余电量低于0.2时,汽车会发出电池不足预警,从键盘输入剩余电量,当小于等于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运行结果图典型案例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任务分析与实践算法分析:定义采集时间输入采集时间if(采集时间)=30)显示样本采集正常else显示采集样本太少任务目标流程图如图3-2-12所示:图3-2-12任务目标流程图程序代码:#include"stdio.h"voidmain(){intcollected_time;printf("请从键盘输入新能源车辆数据采集时间:");scanf("%d",&collected_time);if(collected_time>=30){ printf("数据采集正常");}else{ printf("采集样本太少");}}3.2.5动手练习1.在某个公交公司,规定当驾龄5年及以上可以开长途,当驾龄低于5年的时候,可以开短途。(参考变量驾龄driving_age
)2.在某个4S店招实习生,规定当年龄大于等于18岁时,可以实习。当年龄低于18岁时,不可以实习。(参考变量年龄age
)3.某市坐地铁的费用是根据所坐的两点间最短站点个数计算机费用,当站点个数不超过4个时,费用4元,当站点个数5-8个时6元,当站点个数超过8个时8元,输入站点个数输出所需费用。分析此程序是否可以采用双分支结构,为什么?4.判别某一年year是否闰年。闰年的条件是符合下面二者之一:能被4整除,但不能被100整除。能被4整除,又能被400整除。(参考变量年year)课题任务3.3判断车辆的故障等级(多分支)课型讲练授课班级授课时数2教学目标if语句嵌套格式在程序中的应用关系运算符和逻辑运算符具体运用教学重点if语句的具体应用。软件开发方法的运用。教学难点使用if语句嵌套格式对具体问题的算法描述。if-else-if语句关系运算符和逻辑运算符具体运用。学情分析if语句前面已经讲过,简单if-else的结构学生基本掌握,本节主要内容是复杂选择结构,关键是要学生要分清if-else如何搭配。教学效果教后记任务3.3判断车辆的故障等级(多分支)3.3.1任务目标根据新能源汽车电量的使用程度进行显示,100%显示为充满状态,80%以上显示为良好状态,50%显示充足状态,20%显示正常状态,20%以下显示缺电状态,0%显示无电量,无法行驶状态。从键盘输入电量,输出状态。(变量:剩余电量占比residual_battery_proportion)任务目标运行截图如图3-3-1所示:图3-3-1任务目标截图3.3.2知识储备当我们碰到判断后有3个及以上结果时,我们就需要考虑使用多分支结构来解决遇到的问题。1.if多分支格式:if(表达式1)语句1;elseif(表达式2)语句2;…elseif(表达式n)语句n;[else语句n+1;]语句执行过程:如果表达式1为真,执行语句1;如果表达式1为假,而表达式2为真,执行语句2;以此类推,如果表达式1,…,表达式n-1均为假,而表达式n为真,则执行语句n;如果表达式1,…,表达式n均为假,则执行语句n+1。多分支流程图如图3-3-2所示。图3-3-2多分支流程图2.示例:从键盘输入考试分数mark,若按分数值mark,将考试成绩分成“优秀”(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(“优秀!”);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(“优秀!”);elseif(mark>=80)printf(“良好!”);elseif(mark>=60)printf(“及格!”);elseprintf(“不及格!”);}3.3.3典型案例典型案例1:汽车故障诊断应用中将车辆故障等级分为4级:0,正常;1,一级故障/严重故障,停机处理;2,二级故障/轻微故障,限定功率;3,三级故障/警告提醒。依据输入的故障等级,输出相应的处理模式,如输入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("输入你的事故等级(数字):\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:驾驶员考试在科目三考试时,主要考察挡位和车速是否匹配,假设车速为0时,使用0挡,低于15km/h使用一挡,车速在15-30km/h时使用二挡,车速在30-40km/h时使用三挡,车速在40-60km/h时使用四挡,车速在60km/h以上使用五挡。通过键盘输入车速,输出汽车相应的挡位。(变量:车速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:驾驶员准驾车辆和获得的驾驶证对应,下面是列举的几种驾照和相应车型的关系A1:大型客车——大型客车是指车长大于等于6米或者核定载客人数大于等于20人的载客汽车。A2:牵引车——牵引车采用电动机驱动,利用其牵引能力(2.0~8.0吨),后面拉动几个装载货物的小车。A3:城市公交车——泛指指城市范围内定线运营的公共汽车及轨道交通等交通方式。B1:中型客车——车长小于6米且核定载客人数(含司机)10座(含)以上,19座(含)以下的客运车辆称为中型客车。B2:大型货车——大型货车指重型和中型载货汽车。重型载货汽车车长大于等于6m,总质量大于等于12000kg。中型载货汽车车长大于等于6m,总质量大于等于4500kg且小于12000kg。C1:小型汽车——总质量不超过4.5t、乘坐人数(包括驾驶员)不超过9人或车长6m以下的汽车。C2:小型自动挡汽车。通过键盘输入驾驶证的类型输出准驾车型。(变量:驾驶证类型Typeofdrivinglicense)算法分析:1.定义车型2.输入车型3.运用多分支判别if(车型=A1)输出大型客车内容elseif(车型=A2)输出牵引车内容elseif(车型=A3)输出城市公交车内容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米或者核定载客人数大于等于20人的载客汽车。\n");}elseif(strcmp(Typeofdrivinglicense,"A2")==0){ printf("牵引车--牵引车采用电动机驱动,利用其牵引能力(2.0~8.0吨),后面拉动几个装载货物的小车\n");}elseif(strcmp(Typeofdrivinglicense,"A3")==0){ printf("城市公交车--泛指指城市范围内定线运营的公共汽车及轨道交通等交通方式。\n");}elseif(strcmp(Typeofdrivinglicense,"B1")==0){ printf("中型客车--车长小于6米且核定载客人数(含司机)10座(含)以上,19座(含)以下的客运车辆称为中型客车。\n");}elseif(strcmp(Typeofdrivinglicense,"B2")==0){ printf("大型货车--大型货车指重型和中型载货汽车。重型载货汽车车长大于等于6m,总质量大于等于12000kg。中型载货汽车车长大于等于6m,总质量大于等于4500kg且小于12000kg。\n");}elseif(strcmp(Typeofdrivinglicense,"C1")==0){ printf("小型汽车--总质量不超过4.5t、乘坐人数(包括驾驶员)不超过9人或车长6m以下的汽车。\n");}elseif(strcmp(Typeofdrivinglicense,"C2")==0){ printf("小型自动挡汽车。\n");}elseprintf("输入有误");}典型案例3运行截图如图3-3-12所示:图3-3-12典型案例4运行截图3.3.4任务分析与实践算法分析:定义电量状态输入电量状态多分支判别if(电量<0)输出输入有误elseif(电量=0)任务目标流程图如图3-3-13所示图3-3-13任务目标流程图程序代码:#include"stdio.h"intmain(){intRap;printf("输入你的电量状态(占比数字):\n");scanf("%d",&Rap);if(Rap<0)printf("输入有误");elseif(Rap==0){ printf("无电量,无法行驶状态。\n");} elseif(Rap<20){ printf("缺电状态\n");}elseif(Rap<50){ printf("正常状态\n");}elseif(Rap<80){ printf("充足状态\n");}elseif(Rap<100){ printf("良好状态\n");}else{ printf("充满状态\n");}}3.3.5动手练习1.驾驶员目前当要检查他的身体情况。设计一个健康秤的程序,从键盘输入身高,体重,判断某人的健康状况。计算公式为:标准体重=身高-105;体重高于标准体重*1.1为偏胖,提示“偏胖,注意节食”;体重低于标准体重*0.9为偏瘦,提示“偏瘦,增加营养”;其他为正常,提示“正常,继续保持”。(参考变量身高H,体重T,标准体重standardweight)2.驾驶员的工资是根据他的工龄来的。当他的驾龄是在1-5年的时候呢,工资为3200元。当他的驾龄为5-10年的时候,他的工资为4500元。当他的驾龄为十年以上时,他的基本工资为6000元。编写程序,从键盘输入工龄求基本工资。(参考变量工龄lengthofservice)3.汽车显示屏需要显示目前是星期几的英文,从键盘输入数字,显示1-7对应的英文。其它数字显示输入错误。(参考变量数字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.驾驶员每年都有一个等级考核,综合测评分数在0-60(不包含60)的等级为不合格,分数在60-80(不包含90)的等级为合格,80-100的等级为优秀。编写程序,从键盘输入综合测评分数,输出等级。(参考变量分数grade)课题任务3.4判断车辆的故障等级(switch)课型讲练授课班级授课时数2教学目标掌握switch语句的形式特点,可以将原有的部分if-else语句改为switch语句教学重点switch语句的特点,以前的if-else语句的转化教学难点熟练应用switch语句学情分析学生对于分支结构结构已经有所接触,由于本学期两个班级的学生刚刚接触学习C语言,对于程序的学习方法还不是很熟悉,还没有从高中的学习方法中脱离出来,因此,还需多多练习。教学效果教后记任务3.4判断车辆的故障等级(switch)3.4.1任务目标根据新能源汽车电量的使用程度进行剩余电量提示,假设汽车电池容量的格子共有10格,10格时显示为充满状态,8-9格显示为充足状态,5-7显示正常状态,2-4显示预警状态,1-2以显示报警状态,0显示无电量,无法行驶状态。通过键盘输入电池容量格子的数目,输出剩余电量状态。(变量:电量battery)任务目标运行截图如图3-4-1所示:图3-4-1任务目标运行截图3.4.2知识储备switch语句也称为开关语句,是多分支结构的一种特殊形式。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常量可以是数值(整数),也可以是字符,但不能为其他的值。(2)可以省略一些case和default。(3)每个case或default后的语句可以是语句体,但不需要使用"{"和"}"括起来。(4)每个case语句体的最后都应有一个break语句。执行switch开关语句时,将常量表达式的值逐个与case后的常量进行比较,若与其中一个相等,则执行该常量下的语句,若不与任何一个常量相等,则执行default后面的语句。2.示例:小丽星期日出去逛街,她发现自己所带的钱不够,因此考虑去ATM机取钱。输入正确密码后,ATM机会有一个显示屏,可以查询、取款、转账、退出等操作如图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("您选择了取款服务!\n"); elseif(choose==2)printf("您选择了查询服务!\n"); elseif(choose==3)printf("您选择了转帐服务!\n"); elseif(choose==4)printf("您选择了退出,请取卡!\n");}方法二:switch流程图图3-4-5示例switch多分支流程图#include"stdio.h"voidmain(){ intchoose; printf("输入您的选项:"); scanf("%d",&choose); switch(choose) { case1:printf("您选择了取款服务!\n");break; case2:printf("您选择了查询服务!\n");break; case3:printf("您选择了转帐服务!\n");break; case4: printf("您选择了退出,请取卡!\n"); }}3.4.3典型案例典型案例1:汽车故障诊断应用中将车辆故障等级分为4级:0,正常;1,一级故障/严重故障,停机处理;2,二级故障/轻微故障,限定功率;3,三级故障/警告提醒。依据输入的故障等级,输出相应的处理模式,如输入1显示“一级故障/严重故障,停机处理”。如果输入其它数据,则显示输入有误。(变量:故障等级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:驾驶员可以驾驶的车辆和获得的驾驶证存在对应关系,下面列举几种驾照和车型的关系: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运行截图提问:任务3.3的典型案例2可以用switch实现吗?为什么?典型案例3:正常情况下新能源汽车电池有6-8年的使用年限,当处于第1-2年时,电池质量较好,在质保期,当处于第3-4年时,电池质量正常,在质保期;当处于第5-6年时,电池里程较短,在质保期;当处于第7-8年时,电池已过质保期;当使用超过8年以上时,则必须更换。通过键盘输入电池的使用年限,输出相应的电池状态。(变量:电池年限batteryyears)算法分析:1.定义年限2.输入年限3.根据年限判别典型案例3流程图如图3-4-10所示:图3-4-10典型案例3流程图程序代码#include"stdio.h"voidmain(){intbatteryyears;printf("请输入使用年限:\n");scanf("%d",&batteryyears);switch(batteryyears){case1:case2:printf("电池质量较好,在质保期\n");break;case3:case4:printf("电池质量正常,在质保期\n");break;case5:case6:printf("电池里程较短,在质保期\n");break;case7:case8:printf("电池已过质保期\n");break;default:printf("电池必须更换\n");break;}}典型案例3运行截图如图3-4-11所示:图3-4-11典型案例3运行截图典型案例4:机动车驾驶员考试在科目三考试时,主要考察档位和车速是否匹配,假设车速为0-15km/h使用一档(不包含15),车速在15-30km/h时使用二挡(不包含30),车速在30-40km/h时使用三挡(不包含40),车速在40-60km/h时使用四挡,车速在60km/h以上时使用五挡。通过键盘输入车速,求车辆相应所处的档位。(变量:车速speed)算法分析:1.定义速度2.输入速度3.将数据分析特点,进行对5整除。4.根据速度比例进行匹配。典型案例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任务分析与实践算法分析:1.定义剩余变量2.输入剩余变量3.根据格子数辨别电量状态任务目标流程图如图3-4-14所示:图3-4-14任务目标流程图#include"stdio.h"voidmain(){intbattery,n;printf("请输入剩余电量:\n");scanf("%d",&battery);n=battery/10;switch(n){case10:printf("充满状态\n");break;case9:case8:printf("充足状态\n");break;case7:case6:case5:printf("正常状态\n");break;case4:case3:printf("预警状态\n");break;case2:case1:printf("报警状态\n");break;case0:printf("无电量\n");break;}}3.4.5动手练习1.汽车显示屏需要显示目前是星期几的英文,从键盘输入数字,显示1-7对应的英文。其它数字显示输入错误。(参考变量数字digit)2.驾驶员的工资是根据他的工龄来的。当他的驾龄是在1-5年的时候呢,工资为3200元。当他的驾龄为5-10年的时候,他的工资为4500元。当他的驾龄为十年以上时,他的基本工资为6000元。编写程序,从键盘输入工龄求基本工资。(参考变量工龄lengthofservice)3.学校的实训成绩一般是按照等级输出的,其中[0-60)为不合格,[60,80)为合格,[80-90)为良好,[90-100]为优秀。从键盘输入成绩,输出等级。课题任务3.5车辆故障诊断与维修(选择嵌套)课型讲练授课班级授课时数2教学目标掌握选择语句的嵌套结构教学重点选择语句的嵌套结构教学难点选择语句的嵌套结构学情分析之前上课已经完成了选择的单分支,双分支,多分支结构。对于复杂的内容,需要使用嵌套结构。学生分析如何使用嵌套是一个难点。教学效果教后记任务3.5车辆故障诊断与维修(选择嵌套)3.5.1任务目标当车辆出现故障时,可以在4S店,路边维修店和连锁维修店选择维修,假设目前维修的项目是换轮胎,路边维修店里每个轮胎的价格是500,2个及以上可以打7折;连锁维修店的价格是550,2个及以上可以打8折;4s店维修店的价格是650,2个及以上可以打9折。通过键盘输入维修地点和轮胎个数,求维修的价格。(变量:维修地点repairlocation,轮胎价格tireprice,折扣discount)任务目标运行截图如图3-5-1所示:图3-5-1任务目标运行截图3.5.2知识储备有时我们遇到问题需要考虑多种情况的条件,这时就不得不在选择结构中再包含选择结构。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");}程序的运行结果是__&___分析:首先判别a的值,根据a的值再判别其它情况。如果a=1结果等于是什么?3.5.3典型案例典型案例1:新能源电动车充电时,可以选择快充和慢充两种方式。快充时,如果需要充电电量不超过80%,则30分钟即可完成,充电超过80%后需要的时间每1%需要10分钟。慢充时,每1%需要8分钟。从键盘输入充电方式和需要充的电量。(变量:充电方式recharge_mode,需求电量required_battery)算法分析1.定义变量2.输入充电方式和需求电量3.先考虑充电方式再根据需求电量判别典型案例1流程图如图3-5-2所示:图3-5-2典型案例1流程图程序代码:#include"stdio.h"voidmain(){intrecharge_mode,required_battery,time;printf("1:快充\t2:慢充\n\n");printf("请选择充电方式:(输入对应方式前的数字)\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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 语言与沟通能力培养策略计划
- 网咖租赁合同三篇
- 2024版二手购房合同模板(专业版)3篇
- 2024年度广告投放合同标的及广告服务内容3篇
- 住院安全管理与保障措施总结计划
- 2024年度番禺房屋租赁合同乙方(承租人)权利义务2篇
- 2024年互联网金融服务合同详述
- 二手办公家具买卖合同2024年度样本及搬运费用3篇
- 2024年度房产买卖代理服务协议全篇
- 2024年健身俱乐部全面管理承包协议版B版
- 抗菌药物培训考试试题及答案9
- GB/T 1720-2020漆膜划圈试验
- 公立医院内部控制管理办法解读
- 1:1000地形图测绘项目技术设计书
- 新汉语水平考试HSK三级真题(附答案)
- 第16课《猫》课件(共19张PPT) 部编版语文七年级上册
- 聚乙烯(PE)管道的焊口质量检验及案例分析课件
- 公司BIM人才管理办法
- 卒中防治中心建设情况汇报(同名166)课件
- 广东新高考选科选科解读课件
- 阿托伐他汀钙片培训课件
评论
0/150
提交评论