一、教学思想(包括教学背景、教学目标)1、关于“C语言”计算机的本质是“程序的机器”,程序和指令的思想是计算机系统中最基本的概念,只有懂得程序设才能懂得计算机,真正了解计算机是怎样工作的;通过学习程序设计可以使我们进一步了解计算机的工作原理,更好地理解个应用计算机,学会用计算机处理问题的方法。C语言作为一种高级程序设计语言,相比其他高级程序设计语言有着公认的一些特点,比如语言本身简介,生成的代码质量高,使用灵活等。它既可以编写计算机系统软件又可以编写各类应用软件。C语言作为一种简洁高校并且支持结构化编程的程序设计语言,在讲究效率的时代,对于帮助学习者掌握程序设计的基本思想和方法,进而更好地理解计算机的工作,会有极大的帮助。2、关于选择结构程序设计选择结构程序设计是结构化程序设计的3种基本结构之一,是程序设计中常用的结构。前面介绍的顺序结构里,程序中的所有语句按照书写顺序依次执行。而在日常生活中,处理事情的顺序并不都是按部就班的顺序进行,有时会根据某些条件进行选择。比如在进行周末活动安排时,我们可以说:“如果天气好,我们就去郊游,否则我们就去体育馆打球。”在这样安排中,可以看到,“郊游”和“打球”哪个动作实际执行依赖于“天气好”这个条件是否满足。在程序设计中,上述安排就要用选择结构来实现。选择结构的作用是根据所给条件的真假,决定程序的运行途径。在上述实例中,“天气好?”是控制条件,它的作用是决定程序的流程,如果天气确实好,则条件为真,进行“郊游”这个活动,如果天气不好,则条件为假,进行“打球”这个活动。“郊游”和“打球“两个活动只进行一个,该选择结构结束后,再执行下面的语句。3、教学目标知识与技能目标:掌握关系运算、逻辑运算和C语言条件语句的使用。过程与方法目标:通过课程举例,程序的比较和运行和程序流程图的使用,让学生加深记忆,理解条件语句的执行顺序。情感态度与价值观目标:学习条件语句使学生进一步了解程序,对程序设计产生学习兴趣。4、教学重点与难点重点:if语句、switch语句的使用难点:if语句的嵌套二、课程设计思路(包括教学方法、教学手段)教学步骤教学内容设计意图表达方式1、学习关系运算和关系表达式2、学习逻辑运算和逻辑表达式以及运算符的优先次序关系运算符:用来对两个数值进行比较的比较运算符C语言提供6种关系运算符:①<(小于)②<=(小于或等于)③>(大于)④>=(大于或等于)⑤==(等于)⑥!=(不等于)关系表达式用关系运算符将两个数值或数值表达式连接起来的式子表达式关系运算符表达式关系表达式的值是一个逻辑值例:a+bc+d(a=3)(b=5)‘a’!=‘A’(ab)==(cd)3种逻辑运算符:&&(逻辑与)||(逻辑或)!(逻辑非)&&和||是双目(元)运算符!是一目(元)运算符逻辑表达式表达式逻辑运算符表达式例:判断年龄在13至17岁之内?age=13&&age=17判断年龄小于12或大于65?age12||age65逻辑运算符的优先次序!→&&→||(!为三者中最高)与其他运算符的优先次序!(高)算术运算符关系运算符&&和||赋值运算符(低)例:判别某一年是否闰年,用逻辑表达式表示闰年的条件是符合下面二者之一:①能被4整除,但不能被100整除,如2008②能被400整除,如2000(year%4==0&&year100!=0)||year%400==0选择结构程序设计中条件语句的使用需要使用关系运算和逻辑运算。使用简单的例子便于学生理解。在教学过程中由简入难1——真0——假教学步骤教学内容设计意图表达方式2、学习逻辑运算和逻辑表达式以及运算符的优先次序3、使用if语句实现选择结构和条件判断语句如果表达式值为1,则闰年;否则为非闰年例:例:求方程的根。由键盘输入a,b,c。假设a,b,c的值任意,并不保证。需要在程序中进行判别,如果,就计算并输出方程的两个实根,否则就输出“方程无实根”的信息。左边为顺序结构的程序流程图,右边为选择结构程序流程图。比较它们的之间区别。#includestdio.h#includemath.hintmain(){doublea,b,c,disc,x1,x2,p,q;scanf(%lf%lf%lf,&a,&b,&c);disc=b*b-4*a*c;if(disc0)选择结构和条件判断语句是本章的重难点,对于初学者有一定的难度,这一部分内容采用大量的例题以便学生理解和掌握选择语句的用法。02cbxax042acb042acb教学步骤教学内容设计意图表达方式3、使用if语句实现选择结构和条件判断语句printf(“hasnotrealroots\n”);else{p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(“realroots:\nx1=%7.2f\nx2=%7.2f\n”,x1,x2);}return0;}当程序输入6,3,1时,它的运行结果是什么?当程序输入2,4,1时,它的运行结果是什么?例:输入两个实数,按代数值由小到大的顺序输出这两个数。解题思路:只需要做一次比较,然后进行一次交换即可用if语句实现条件判断关键是怎样实现两个变量值的互换#includestdio.hintmain(){floata,b,t;scanf(%f,%f,&a,&b);if(ab){t=a;a=b;b=t;}printf(%5.2f,%5.2f\n,a,b);return0;}例:输入3个数a,b,c,要求按由小到大的顺序输出。解题思路:可以先用伪代码写出算法:ifab,a和b对换(a是a、b中的小者)ifac,a和c对换(a是三者中最小者)ifbc,b和c对换(b是三者中次小者)顺序输出a,b,c#includestdio.hintmain(){floata,b,c,t;scanf(%f,%f,%f,&a,&b,&c);if(ab)如果ab,将a和b对换{t=a;a=b;b=t;}a是a、b中的小者通过例题的实际运用让学生了解条件判断的作用选择结构的使用。教学步骤教学内容设计意图表达方式3、使用if语句实现选择结构和条件判断语句if(ac)如果ac,将a和b对换{t=a;a=c;c=t;}a是a、c中的小者if(bc)如果bc,将a和b对换{t=b;b=c;c=t;}b是b、c中的小者printf(%5.2f,%5.2f,%5.2f\n,a,b,c);return0;}运行程序并输出结果。if语句的一般形式:if(表达式)语句1[else语句2]最常用的3种if语句形式:1.if(表达式)语句1(没有else子句)2.if(表达式)语句1else语句2(有else子句)3.if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3┆elseif(表达式m)语句melse语句m+1(在else部分又嵌套了多层的if语句)通过例题的学习引入if语句的格式和使用方法。让学生自己找出规律加深记忆。教学步骤教学内容设计意图表达方式3、使用if语句实现选择结构和条件判断语句例:某运输公司吨公里基本运费为p,根据距离s的远近计费标准如下:s250km没有折扣250s5002%折扣500s10005%折扣1000s20008%折扣2000s300010%折扣3000s15%折扣根据货物重量w和运距s,求运费f。main(){floatp,s,w,d,f;scanf(“%f%f%f”,&p,&s,&w);if(s=3000)d=0.15;elseif(s=2000)d=0.10;elseif(s=1000)d=0.08;elseif(s=500)d=0.05;elseif(s=250)d=0.02;elsed=0.0;f=p*w*s*(1-d);printf(“f=%15.2f”,f);}选择结构的嵌套:在if语句中又包含一个或多个if语句称为if语句的嵌套一般形式:if()if()语句1else语句2else运用例题巩固知识,实现多重选择语句的使用。else总是与它上面最近的未配对的if配对教学步骤教学内容设计意图表达方式3、使用if语句实现选择结构和条件判断语句4、条件运算符和条件表达式if()语句3else语句4内嵌if例:有一函数:编一程序,输入一个x值,要求输出相应的y值。解题思路:方法1(1)先后用3个独立的if语句处理:输入x若x0,则y=-1若x=0,则y=0若x0,则y=1输出x和y解题思路:方法2(2)用一个嵌套的if语句处理:输入x若x0,则y=-1否则若x=0,则y=0否则y=1输出x和y有一种if语句,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值如:if(ab)max=a;elsemax=b;1、条件表达式的一般形式表达式1?表达式2:表达式32、运算规则先计算表达式1,若为非0,则以表达式2的值作为条件表达式的值;否则,以表达式3的值为条件表达式的值。3、优先级算术关系逻辑运算(!除外)条件运算赋值运算高低(1)输出x和y当中的最大值z=xy?x:y;printf(“max=%d”,z);或printf(“max=%d”,xy?x:y);或xy?printf(“%d”,x):printf(“%d”,y);(2)ab?a:b+1等价于ab?a:(b+1)而不是(ab?a:b)+1(3)ab?a:cd?c:d等价于ab?a:(cd?c:d)(4)xy?1:5.6表达式的值的类型取高的引用例题使用多种方法说明if的嵌套使用,便于理解和记忆。条件运算符和条件表达式相对而言比较简单,在教学过程中列举表达式的一般形式并举例说明。scanf(%d,&x);if(x0)y=-1;if(x==0)y=0;if(x0)y=1;printf(x=%d,y=%d\n,x,y);scanf(%d,&x);if(x0)y=-1;elseif(x==0)y=0;elsey=1;printf(x=%d,y=%d\n,x,y);max=(ab)?a:b;右结合scanf(%d,&x);if(x=0)if(x0)y=1;elsey=0;elsey=-1;printf(x=%d,y=%d\n,x,y);)0(1)0(0)0(1xxxy教学步骤教学内容设计意图表达方式4、条件运算符和条件表达式5、用switch语句实现多分支选择结构例:输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。#includestdio.hintmain(){charch;scanf(%c,&ch);ch=(ch='A'&&ch='Z‘)?(ch+32):ch;printf(%c\n,ch);return0;}switch语句的作用是根据表达式的值,使流程跳转到不同的语句switch语句的一般形式:switch(表达式){case常量1:语句1case常量2:语句2┇┇┇case常量n:语句ndefault:语句n+1}switch语句的作用是根据表达式的值,使流程跳转到不同的语句switch语句的执行过程:当switch后的表达式的值与某一个case后的常量表达式的值相等时,执行其后的语句;若无匹配,则执行default后的语句break语句使流程跳出switch结构,终止switch语句的执行。例:要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60~69分,D等为60分以下。成绩的等级由键盘输入。#includestdio.hintmain(){chargrade;scanf(%c,&grade);printf(Yourscore:);switch(grade){case'A':printf(85~100\n);break;case'