湖南省C语言上教案第四章分支结构程序设计高教版doc.docx
- 文档编号:26246846
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:27
- 大小:64.66KB
湖南省C语言上教案第四章分支结构程序设计高教版doc.docx
《湖南省C语言上教案第四章分支结构程序设计高教版doc.docx》由会员分享,可在线阅读,更多相关《湖南省C语言上教案第四章分支结构程序设计高教版doc.docx(27页珍藏版)》请在冰豆网上搜索。
湖南省C语言上教案第四章分支结构程序设计高教版doc
第四章分支结构程序设计
课题
关系运算符
教学
目的
1、掌握实现选择结构的两个运算符
2、运算符表达式的计算
教材
分析
教学重点
关系运算符及运算
教学难点
表达式的计算与应用
课时安排
1+1习题课
教学方法
讲授与演示法相结合讨论法
教具
计算机、投影仪
教
学
内
容
及
过
程
设
计
一新课引入
上一次课已经介绍了程序基本结构之一,但在大多数情况下都要用到选择结构
而选择的前提是按一定的逻辑条件进行的。
二、新授
一、关系运算符与关系表达式
1、关系运算符:
<<=>>===!
=
优先级:
<<=>>=高于==!
=
关系运算符低于算术运算符,高于赋值运算符
2、关系表达式:
用关系运算符将两个表达式(可以是算术表达式或
关系表达式,逻辑表达式,赋值表达式,字符表达式)连接起来的式子。
关系表达式求值:
关系成立,值为1;关系不成立,值为0
C语言中没有专用的逻辑值,1代表真,0代表假
例:
a>b,a+b>b+c,(a=3)>(b=5),’a’<‘b’,(a>b)>(b 关系表达式的值是一个逻辑值,即“真”或“假”。 例: 关系表达式”a>b”的值为“真”,表达式的值为1。 一、逻辑运算符与关系表达式 1、逻辑运算符及其优先次序 (1)&&(逻辑与)相当于其他语言中的AND (2)||(逻辑或)相当于其他语言中的OR (3)! (逻辑非)相当于其他语言中的NOT 例: a&&b若a,b为真,则a&&b为真。 a||b若a,b之一为真,则a||b为真。 ! a若a为真,则! a为假。 优先次序: 自左向右运算 ! (非)->&&()->||() 逻辑运算符中的“&&”和“||”低于关系运算符,“! ”高于算术运算符 2、逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。 逻辑表达式的值应该是一个逻辑量“真”或“假”。 例: 设a=4,b=5: ! a的值为0a&&b的值为1 a||b的值为1! a||b的值为1 例: 5>3&&8<4-! 0 课题 关系运算符与表达式(习题课) 教学 目的 1、通过习题理解优先级 2、 教材 分析 教学重点 运算符优先级 教学难点 课时安排 1 教学方法 讲授与讨论法 教具 计算机、投影仪 教 学 内 容 及 过 程 设 计 知识点: 在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。 (1)a&&b&&c只有a为真时,才需要判断b的值,只有a和b都为真时, 才需要判断c的值。 (2)a||b||c只要a为真,就不必判断b和c的值,只有a为假,才 判断b。 a和b都为假才判断c 一、例题演讲 1、: (m=a>b)&&(n=c>d)当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“a>b”的值为0,因此m=0,而“n=c>d”不被执行,因此n的值不是0而仍保持原值1 2、正确表示“当x的取值在[1,10]和[200,210]范围内为真, 否则为假”的表达式是 (x>=1)&&(x<=10)||(x>=200)&&(x<=210) 1、a=b=c=3;++a||++b&&++c;第二个表达式的值? 4、include main() {inti=-1,j=4,k; k=(i++<=0)&&(! (j--<=0)); printf("%d,%d,%d\n",k,i,j); } 2、inti=2,j=4; printf("%d\n",i++*i++*i++); 或printf("%d\n",++*i++i*++i); 或printf("%d\n",i+4*i+++6); 分别写出三个输出的结果 二、学生练习。 1.若a=5,b=6,c=7,d=8,则表达式d=a/2&&b==c||! a的值为 2.定义intx=10,y,z;执行y=z=x;x=y==z后,变量x的值为。 备注 上机实训一课时 课题 if分支选择语句 教学 目的 1、掌握if三种形式 2、 教材 分析 教学重点 语句格式 教学难点 if语句的应用 课时安排 1 教学方法 讲授与演示法相结合讨论法 教具 计算机、投影仪 教 学 内 容 及 过 程 设 计 一新课引入 选择结构是三在结构之一,常用。 二、新授 语法1: if(表达式)语句 例: if(x>y)printf(“%d”,x); 语法2: if(表达式)语句1;else语句2; 例: if(x>y)printf(“%d”,x); elseprintf(“%d”,y); 语法3: 也称ifelseif语句 if(表达式1)语句1; elseif(表达式2)语句2; elseif(表达式3)语句3; …… else语句n+1; 例: if(number>500)cost=0.15; elseif(number>300)cost=0.10; elseif(number>100)cost=0.075; elseif(number>50)cost=0.05; elsecost=0; 3、习题讲解。 备注 课题 if分支选择语句 教学 目的 1、巩固if三种形式 2、掌握if 教材 分析 教学重点 语句格式 教学难点 if语句的应用 课时安排 1 教学方法 讲授与演示法相结合讨论法 教具 计算机、投影仪 教 学 内 容 及 过 程 设 计 一、复习引入 上节课是选择结构的三种形式,那如何应用,应用时应注意哪些? 二、新授 1例: 输入两个实数,按代数值由小到大的顺序输出这两个数。 #include voidmain() {floata,b,t; scanf(″%f,%f″,&a,&b); if(a>b){t=a;a=b;b=t;}printf(″%5.2f,%5.2f\n″,a,b);} 2、说明: 1. if关键字后均为表达式(逻辑表达式、关系表达式、赋值表达式、变量等); 如: if(a=5)语句;if(b)语句; 2. 条件表达式必须用括号括起来,在语句后必须加分号; 3. 满足条件需执行一组语句时,该组语句必须用{}括起来; 4. if语句嵌套时,else总是与它最靠近的未配对的if匹配; 5.因为if语句执行时总是简单地测试其中作为条件的“表达式”的值是0还是非0,便可利用这种特性来简化程序设计。 如对于: if(expression! =0)完全可用if(expression)来代替; 同理: if(! exp)语句;等价于: if(exp==0)语句; 3、习题讲解。 练习完成以下任务: 输入三个数a,b,c,要求按由小到大的顺序输出。 参考答案: #include voidmain() {floata,b,c,t; scanf(″%f,%f,%f″,&a,&b,&c); if(a>b){t=a;a=b;b=t;} if(a>c){t=a;a=c;c=t;} if(b>c){t=b;b=c;c=t;} printf("%5.2f,%5.2f,%5.2f\n",a,b,c); } 三、课堂小结 1、if的三种格试 2、if-else语句的应用。 P201-5P45110-114 备注 此课时另安排上机实验,学习选择结构的程序设计 课题 If语句的嵌套 教学 目的 1、掌握嵌套的含义 2、嵌套的配对原则 教材 分析 教学重点 嵌套的运行理解 教学难点 if语句的应用 课时安排 1 教学方法 讲授与演示法相结合讨论法 教具 计算机、投影仪 教 学 内 容 及 过 程 设 计 一新课引入 若有多种情况,我们的ifelseif语句不能太深,不利于应用。 当然我们的ifelseif语句可理解为是嵌套的一个特例。 二、新授 1、if语句的嵌套 在if语句中又包含一个或多个if语句称为if语句的嵌套。 形式: If() if()语句1 else语句2 else if()语句3 else语句4 匹配规则: else总是与它上面的,最近的,统一复合语句中的,未配 对的if语句配对。 例: if() if()语句1 else if()语句2 else语句3 当if和else数目不同时,可以加花括号来确定配对关系。 -1(x<0) 3、思考: 有一个函数y=0(x=0),编一程序,输入一个x值,输出y值。 1(x>0) 备注 课题 三目条件运算符及其表达式 教学 目的 1、了解三目条件运算符 2、掌握表达式的应用 教材 分析 教学重点 表达式的应用 教学难点 表达式语句的应用 课时安排 1 教学方法 讲授与演示法相结合讨论法 教具 计算机、投影仪 教 学 内 容 及 过 程 设 计 一新课引入 二、新授 1、条件运算符: ? : 2、格式: e1? e2: e3 3、功能: 判e1的值,为1时计算e2,否则计算e3; 如: max=(a>b)? a: b等价于if(a>b)max=a; elsemax=b; 4、说明: 1) 条件运算符的结合方向自右至左 如: a>b? a: c>d? c: d等价于a>b? a: (c>d? c: d) 若inta=1,b=2,c=3,d=4;则表达式的值为________ 2) 条件运算符的优先级仅高于逗号运算符与赋值运算符; 3) 只有当if语句的真假均只执行一个赋值语句且给同一变量赋值时,才能用条件表达式取代;如: if(a>b)max=a;elsemax=b; 就执行此case后面的语句,若所有case中的常量表达式的值都与表达式的值不相等,执行default后面语句。 例: if(a>b)max=a; elsemax=b; 当a>b时将a的值赋给max,当a≤b时将b的值赋给max, 可以看到无论a>b是否满足,都是向同一个变量赋值。 可以用下面的条件运算符来处理: max=(a>b)? a∶b; 3、小结。 备注 课题 switch语句 教学 目的 1、掌握switch语句格式 2、掌握switch语句的执行流程 教材 分析 教学重点 switch语句的执行过程 教学难点 switch语句的应用 课时安排 1 教学方法 讲授与演示法相结合讨论法 教具 计算机、投影仪 教 学 内 容 及 过 程 设 计 一复习引入 当分支的情况越多,if的层次分越多! 于是出现了开关语句 二、新授switch语句 语法1: switch(表达式) {caseC1: 语句序列1; caseC2: 语句序列2; …… caseCn: 语句序列n; default: 语句序列n+1;} 语法2: switch(表达式) {caseC1: 语句序列1;break; caseC2: 语句序列2;break; …… caseCn: 语句序列n;break; default: 语句序列n+1;break;} 说明: (1)switch后面的()内的表达式,ANSI标准允许他为任何类型 (2)case后的常量表达式一般不可以为实型数据。 (3)当表达式的值与某个case后面的常量表达式的值相等时, (5)每个case后面的常量表达式的值必须互不相同。 否则就会出现互相矛盾的现象(对表达式的同一个值,有两种或多种执行方案)。 (6)各个case与default出现次序不影响结果。 (7)break的使用(终止),是可选项 (8)多个case可以共用一组语句 例: 要求按照考试成绩的等级输出百分制分数段,用 switch语句实现: switch(grade) {case′A′∶printf(″85~100\n″); case′B′∶printf(″70~84\n″); case′C′∶printf(″60~69\n″); case′D′∶printf(″<60\n″); default∶(printf″error\n″);} 功能: 当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。 四、小结。 1、 switch语句2、 在编写程序过程中,注意分支的作用范围,及复合语句的运用 备注 课题 switch语句习题课 教学 目的 1、掌握switch语句格式 2、掌握switch语句的执行流程 教材 分析 教学重点 switch语句的执行过程 教学难点 switch语句的应用 课时安排 1 教学方法 讲授与演示法相结合讨论法 教具 计算机、投影仪 教 学 内 容 及 过 程 设 计 一复习引入 switch语句语法 三、实例 1、运输公司对用户计算运费。 路程(s)越远,每公里运费越低。 标准如下: s<250km没有折扣 250≤s<5002%折扣 500≤s<10005%折扣 1000≤s<20008%折扣 2000≤s<300010%折扣 3000≤s15%折扣 设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为: f=p*w*s*(1-d) 程序代码略 2、main() {charx=‘B’; switch(x) {case‘A’: printf(“ItisA.”); case‘B’: printf(“ItisB.”); case‘C’: printf(“ItisC.”); default: printf(“other.”); }} 1.3、main() {intx=1,y=0,a=0,b=0; switch(x) {case1: switch(y) {case0: a++;break; case1: b++;break;} case2: a++;b++;break; case3: a++;b++;} printf("a=%d,b=%d\n",a,b); } 四、小结(略)。 备注 上机实验,学习选择结构的程序设计,按排一次章节测试 分支程序设计章节练习题 四、选择题 1.若x=0,y=3,z=3,以下表达式值为0的是 A.! xB.x 1: 0C.x%2&&y==zD.y=x||z/3 2.以下运算符中优先级最低的运算符为,优先级最高的为。 A.&&B.! C.! =D.||E.? : F.== 3.若w=1,x=2,y=3,z=4,则条件表达式w w: y y: z的结果为。 A.4B.3C.2D.1 4.若w,x,z均为int型变量,则执行以下语句后的输出为。 w=3;z=7;x=10; printf("%d\n",x>10? x+100: x-10); printf("%d\n",w++||z++); printf("%d\n",! w>z); printf("%d\n",w&&z); A.0B.1C.0D.0 1111 1100 1110 5.分析以下程序,下列说法正确的是。 main() {intx=5,a=0,b=3; if(x=a+b)printf("****\n"); elseprintf("####\n"); } A.有语法错,不能通过编译B.通过编译,但不能连接 C.输出****D.输出#### 6.分析以下程序,下列说法正确的是。 main() {intx=0,a=0,b=0; if(x=a+b)printf("****\n"); elseprintf("####\n"); } A.有语法错,不能通过编译B.通过编译,但不能连接 C.输出****D.输出#### 7.分析以下程序,下列说法正确的是。 main() {intx=0,a=0,b=0; if(x==a+b)printf("****\n"); elseprintf("####\n"); } A.有语法错,不能通过编译B.通过编译,但不能连接 C.输出****D.输出#### 五、读程序写结果 1.include main() {inta=-1,b=4,k; k=(a++<=0)&&(! (b--<=0)); printf("%d,%d,%d\n",k,a,b); } 2.main() {intx=4,y=0,z; x*=3+2; printf("%d",x); x*=(y==(z=4)); printf("%d",x); } 3.main() {intx,y,z; x=3;y=z=4; printf("%d",(x>=z>=x)? 1: 0); printf("%d",z>=y&&y>=x); } 4.main() {intx=1,y=1,z=10; if(z<0) if(y>0)x=3; elsex=5; printf("%d\t",x); if(z=y<0)x=3; elseif(y==0)x=5; elsex=7; printf("%d\t",x); printf("%d\t",z); } 5.main() {charx=‘B’; switch(x) {case‘A’: printf(“ItisA.”); case‘B’: printf(“ItisB.”); case‘C’: printf(“ItisC.”); default: printf(“other.”); } } 6.main() {intx=1,y=0,a=0,b=0; switch(x) {case1: switch(y) {case0: a++;break; case1: b++;break; } case2: a++;b++;break; case3: a++;b++; } printf("a=%d,b=%d\n",a,b); } 六、填空题 1.若a=5,b=6,c=7,d=8,则表达式d=a/2&&b==c||! a的值为 2.定义intx=10,y,z;执行y=z=x;x=y==z后,变量x的值为。 3.分段函数: 输入x,计算y值,输出y,其中: x<0y=2x+3 x=0,y=0 x>0,y=(x+7)/3 #include main() { intx,y; scanf("%d",&x); if(x<0) (1); (2)y=0; (3)y=(x+7)/3; printf(“%d”,y); } 4.由键盘输入三个数,计算以这三个数为边长的三角形面积。 (1) main() { (2); printf("Pleaseenter3reals: \n"); scanf("%f%f%f",&a,&b,&c); if((3)) {s=(a+b+c)*0.5; s1=s*(s-a)*(s-b)*(s-c); s=(4); printf("\nAreaofthetriangleis%f\n",s); } (5) printf("Itisnottriangle! \n"); } 5.有一方程a +bx+c=0,a,b,c的值由键盘输入,请编程序,打印出以下情况时方程的解。 (1)a=0,b≠0 (2)a=0,b=0,c=0 (3)a=0,b=0,c≠0 (4)a≠0, -4ac≥0 (5)a≠0, -4ac≤0 #include"math.h" main() {floata,b,c,d,pr,pi,x1,x2; scanf("%f%f%f",&a,&b,&c); printf("a=%f,b=%f,c=%f\n",a,b,c); if(a==0) {if( (1)) printf("onlyonesolutionx=%f\n",-c/b); else if( (2))printf("nosolution\n"); elseprintf("xisanyvalue\n"); } else {d=b*b-4*a*c; if((3)) {x1=(-b+sqrt(d))/(4); x2=(-b-sqrt(d))/(5); printf("x1=%6.2f,x2=%6.2f\n",x1,x2); } else {pr=-b/(2*a);(6); printf("x1=%6.2f+%6.2fi\n",pr,pi); printf("x2=%6.2f-%6.2fi\n",pr,pi); } } } 6.投票表决器: –输入Y、y,打印agree –输入N、n,打印disagree –输入其他,打印lose main() { charc; scanf("%c",&c); (1) { case‘Y’: case‘y’: printf(“agree”); (2); case‘N’: case‘n’: printf(“disagree”);(3);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湖南省 语言 教案 第四 分支 结构 程序设计 高教 doc