模块二 分支程序设计训练 电子教案(表格式) C语言程序设计(高教版)

资源下载
  1. 二一教育资源

模块二 分支程序设计训练 电子教案(表格式) C语言程序设计(高教版)

资源简介

第3章 面向对象(上)
模块二 分支程序设计训练
职业本科规划教材
《C语言程序设计》
教学设计
课程名称: C语言程序设计
授课年级: 2022年级
授课学期: 2022学年第一学期
教师姓名: XXX
2021年10月22日
课题名称 模块二 分支程序设计训练 计划学时 8学时
内容分析 根据某种条件的成立与否采用不同的程序段进行处理的程序结构称为选择结构。通常选择结构有两个分支,条件为“真”,执行甲程序段,否则执行乙程序段。有时,两个分支还是不能完全描述实际问题,这样的程序结构称为多分支选择结构。
教学目标及基本要求 (1) 掌握关系表达式和逻辑表达式的应用。(2) 掌握利用if语句实现的单分支和双分支选择结构。(3) 掌握利用switch语句实现多分支选择结构。
教学重点 if语句、switch语句
教学难点 多分支选择结构
教学方式 教学采用教师课堂讲授与学生操作练习共同进行的一体化教学方式概念性知识点:提出为什么,将抽象具体化,配合教学PPT、案例辅助讲解。操作性知识点:提需求,并上机演示如何操作,重点内容总结经验及注意事项。学生操作练习:完成教材中的引例、做中学以及练中学案例,有能力的学生还可以完成教师额外布置的拓展练习题目。
教学过程 第一、二学时(if-else语句)一、引例任务,提出需求(1)通过引力任务,引出本节所需知识内容。【引例任务】比较两个数的大小。【程序代码】#include void main( ){float a,b;printf("请您输入两个实数:\n");scanf("%f,%f",&a,&b);if (a>b) printf("第一个数较大。\n");else if (a==b) printf("两个数相等。\n");else printf("第二个数较大。\n");}【程序运行】请您输入两个实数:4,8↙第二个数较大。(2)明确学习方向。【知识点】引例程序中3条输出语句用if-else语句连接,根据关系表达式的值执行其中一条输出语句,是一个典型的分支结构。C语言有两种实现分支结构的语句:if-else和switch-case语句。本节课的主要内容是学习利用if语句实现分支结构。【能力点】掌握单分支if语句掌握双分支if-else语句明确目标,完成任务在C语言中,if语句是常用的条件判断语句,用来判定是否满足指定的条件(条件式),并根据条件式的运算结果来执行给定的操作。C语言提供了3种形式的if语句,在使用时可根据具体问题的复杂程度来选择合适的形式。单分支结构的if语句【做中学2-1】两个数的升序排序。【程序代码】 #include void main( ){ float a,b,t; printf("请输入两个实数:"); scanf("%f,%f",&a,&b); if (a>b) { /*判断a>b的值,如果为真,则执行下面的语句*/ t=a;a=b;b=t;} printf("%5.2f %5.2f\n",a,b);}1)语法格式: if (条件表达式) 语句;2)单分支结构执行过程:首先对表达式求解,当结果为真(非0)时,则执行指定的语句;否则跳过指定语句,接着执行该语句下面的语句。3)语法特征为:一个条件表达式,一个可选执行。2. 双分支结构的if语句【做中学2-2】求绝对值。【程序代码】 #include void main( ){ int x,y; printf("输入一个整数:"); scanf("%d",&x); if (x<0) /*判断x<0是否成立*/ y=-x; else /*若x<0的值为假*/ y=x; printf("这个数的绝对值是:%d\n",y); }1)语法格式: if (条件表达式) 语句1;else 语句2; 2)双分支结构执行过程:先对表达式求解,当结果为“真”(非0)时,执行语句1;当计算结果为假(0)时,执行语句2。然后执行if语句下面的语句。所以利用if-e1se形式的if语句可以实现双向分支选择。实际运用中,语句1、语句2常为复合语句。3.语法特征为:一个条件表达式,两个可选执行。三、归纳总结,布置课后作业 (1)回顾上课前的学习目标,对本节课知识点进行总结。 (2)扫描二维码查看相应资源,完成课后实训题。第三学时(switch-case语句)一、引入学习任务(1)回顾上节课的内容,if-else语句。(2)明确学习方向。【知识点】switch-case语法switch-case语句流程【能力点】熟练掌握switch-case语句二、明确目标,完成任务【做中学2-3】某运输公司对用户收取运费的规定如下(s表示里程数km): S<250 0(没有折扣) 250≤s<500 2% 500≤s<1000 5% 1000≤s<2000 8% 2000≤s<3000 10% 3000≤s 15%设基本运费为每公里每吨p元,货物重为w吨,折扣为d,总运费f的计算公式为 f = p×w×s×(1-d)距离s折扣率d距离s折扣率ds<25001750≤s<20008%250≤s<5002%2000≤s<225010%500≤s<7505%2250≤s<250010%750≤s<10005%2500≤s<275010%1000≤s<12508%2750≤s<300010%1250≤s<15008%3000≤s15%1500≤s<17508%通过分析,可以用多分支选择结构处理这种多种选择的情况。f是因变量,s、p、w的值从键盘输入。【程序代码】 #include void main( ){ int c,s; float p,w,d,f; printf("请输入每公里运价(元/吨*公里),货物重量(吨),运输里程(公里):"); scanf("%f,%f,%d",&p,&w,&s); if(s>=3000) c=12; else c=s/250; switch(c) {case 0:d=0;break; case 1:d=2;break; case 2: case 3:d=5;break; case 4: case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15;break; default:printf("输入里程有错!\n"); } f=p*w*s*(1-d/100.0f); printf("应缴运费:%15.4f\n",f); }1.语法格式:switch (表达式){case常量1:语句1; case常量2:语句2;┇ case常量n:语句n;[default:语句n+1;]}2.switch-case 语句使用说明(1) 表达式可以为任何整数类型(包括字符型,也包括无符号的整数类型)。(2) 各个常量取不同的值。(3) 当表达式的值与某个case后的常量的值相等时,就执行此常量后面的语句,如果表达式的值没有和任何常量相匹配,就执行default后面的语句,如果省略了default语句,那么将不作任何处理,接着执行switch结构后面的语句。(4) 如果在相匹配case的语句块中没有break语句,那么程序将从此开始顺序执行,直到遇到某个case子句中的break语句,才跳出switch结构。否则,一直执行到switch语句结束。因而多个case可以共用同一组执行语句。如: case 8: case 9: case 10: case 11:d=10;break;(5) case后面必须是常量表达式,表达式中不能包含变量。例如,不能写成 case b。(6) default出现的位置不影响程序执行结果。所以可先出现default子句,再出现各case子句。3.语法特征为:一个表达式的值,对应n个常量表达式的值。三、归纳总结,布置课后作业 (1)回顾上课前的学习目标,对本节课知识点进行总结。 (2)扫描二维码查看相应资源,完成课后作业。第四、五学时(多分支结构的if-else语句)引例任务,提出需求(1)回顾上节课的内容,switch-case语句。(2)明确本节课学习方向。【知识点】多分支结构的if-else语句【能力点】熟练掌握多分支结构的if-else语句二、明确目标,完成任务对于双分支结构的if语句,若它的子句(语句1或语句2)也是if语句,就出现了if语句的嵌套。【做中学2-4】分段函数计算。编程实现多值函数的功能。【程序代码】 #include void main( ){ int x,y; printf("请输入一个整数:"); scanf("%d",&x); if(x>0&&x<=10) {/*如果满足条件010&&x<20) { /*如果满足条件10=20&&x<100) { /*如果满足条件20<=x<100 */ y=3*x; printf("x∈[20,100),y=%d\n",y); } else { y=0; printf("x的值太大或太小!y=%d\n",y); }}1.语法格式: if (条件式1) 语句1; else if(条件式2) 语句2; else if条件式3) 语句3 ┇ else if(条件式n) 语句n; else 语句n+1;2.执行过程:执行时,程序首先求解表达式l的值,当计算结果为“真”时,执行语句1;否则求解表达式2的值,当计算结果为“真”时,执行语句2;否则再继续求解表达式3,当计算结果为“真”时,执行语句3;否则接着进行判断,依此类推,直到找到结果为“真”的表达式,并执行与之相关的语句。如果经过求解,所有的表达式都为“假”,那么就执行最后一个else后面的语句。三、归纳总结,布置课后作业 (1)回顾上课前的学习目标,对本节课知识点进行总结.(2)扫描二维码查看相应资源,完成课后作业。第六、七、八学时(边学边练、实训题)一、上机练习【能力点】熟练掌握条件表达式和逻辑表达式的使用。熟练掌握if语句的使用。熟练掌握switch语句的使用。【练中学2-1】实现英寸与厘米的换算。【程序代码】#include void main( ){ float y,r=2.54; int flag; printf("输入数据,标志(1.英寸→厘米,2.厘米→英寸):"); scanf("%f,%d",&y,&flag); if (flag == 2 || flag ==1) if (flag ==1) printf("%10.2f英寸=%10.2f厘米",y,y*r); else printf("%10.2f厘米=%10.2f英寸",y,y/r); else printf("输入数据有错!\n");}【练中学2-2】求方程ax2+bx+c=0的解。【程序代码】#include #include void main( ){ float a,b,c,x1,x2,d; printf("输入一元二次方程的三个系数(a,b,c):"); scanf("%f,%f,%f",&a,&b,&c); if (a==0) if (b==0) printf("不是方程。\n"); else printf("是一次方程只有一个根:x=%10.2f\n",-c/b); else{ d=b*b-4*a*c; if (d<0) printf("方程没有实根。\n"); else if (d>0){ x1= (-b+(float)sqrt(d))/(2*a); x2= (-b-(float)sqrt(d))/(2*a); printf("方程有两不等根:\nx1=%10.2f,x2=%10.2f\n",x1,x2); } else printf("方程有两相等根:\nx1=x2=%10.2f \n",-b/(2*a)); }}【练中学2-3】输入年份,判断是否为润年。【程序代码】#include void main( ){ int year,leap=0; printf("程序用于判断闰年。请输入年份:"); scanf("%d",&year); if (year % 4==0){ if (year%100!=0) leap=1; if (year%400==0) leap=1; } if (leap) printf("%d年是润年。\n",year); else printf("%d年不是闰年。\n",year);}【练中学2-4】三个数按升序排序。【程序代码】#include void main( ){ int a1,a2,a3,temp; printf("请输入3个整数:"); scanf("%d,%d,%d",&a1,&a2,&a3); if (a1>a2) {temp=a1;a1=a2;a2=temp;} if (a2>a3) {temp=a2;a2=a3;a3=temp;} if (a1>a2) {temp=a1;a1=a2;a2=temp;} printf("三个数排序后:%d,%d,%d\n",a1,a2,a3);}【练中学2-5】根据利润计算工资。【程序代码】#include void main( ){ int profit; int grade; /*利润级别*/ double salary=500; /*基本工资*/ printf("输入利润:"); scanf("%ld", &profit); grade= profit / 100; switch(grade){ case 0: break; case 1: salary += profit*0.1; break; /*提成算式*/ case 2: case 3: case 4: salary += profit*0.15; break; case 5: case 6: case 7: case 8: case 9: salary += profit*0.2; break; default: salary += profit*0.25; } printf("salary=%.2f\n", salary);} 二、归纳总结,完成课后实训题 (1)回顾本节课的学习目标,对知识点进行总结。 (2)完成课后实训作业。
教学后记
2

展开更多......

收起↑

资源预览