C语言程序设计教案 第五章 选择结构程序设计_选择结构程序设计教案
C语言程序设计教案 第五章 选择结构程序设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“选择结构程序设计教案”。
第五章 选择结构程序设计
课题:
教学目的: 教学重点: 教学难点: 第五章 选择结构程序设计
1、掌握实现选择结构的两种语句、一个运算符
2、学会编写选择结构的程序
if-else语句、switch语句、条件运算符
嵌套if-else语句中的if与else匹配问题
步骤一 复习引导
上一次课已经介绍了程序基本结构之一,但在大多数情况下都要用到选择结构。
步骤二 讲授新课
在C语言中实现选择结构的控制语句主要有if语句、switch语句
一、条件语句
1、if语句的三种形式
语法1:if(表达式)语句;如:#include main(){ char ch;ch=getchar();
if(ch>‟a‟&&ch
putchar(ch);}
语法2:if(表达式)语句1;
else
语句2; 如:#include
main()
{ int a,b;
scanf(“%d%d”,&a,&b);
if(a>b)printf(“max=%dn”,a);
else printf(“max=%dn”,b);
}
语法3:if(表达式1)语句1;
else if(表达式2)语句2;
else
if(表达式3)语句3;
„„
else 语句n+1;
例如:从键盘上输入字符,判别其分类:控制符、数字、大写字母、小写字母、其他字符。#include “stdio.h” main(){ char c;c=getchar();if(c
else if(c>=„0‟&&c
else if(c>=„A‟&&c
else if(c>=„a‟&&c
else
printf(“This is an other charater.n”);说明:
1、三种形式的 if 语句中,if 关键字后均为表达式(逻辑表达式、关系表达式、赋值表达式、变量等);
如:if(a=5)语句;
if(b)语句;
2、if 语句中,条件表达式必须用括号括起来,在语句后必须加分号;
满足条件需执行一组语句时,该组语句必须用{ }括起来; 如:if(a+b>c&&b+c>a&&a+c>b)
{ s=0.5*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(“area=%6.2fn”,area);
}
else
printf(“It is not a trilateral.”);
3、if 语句嵌套时,else 总是与它最靠近的if 匹配;
如:有一数学函数:x0时,y=1 编写程序,输入x的值,输出相应y的值 main(){ int x,y;
scanf(“%d”,&x);
if(x
else if(x= =0)y=0;
else y=1;
printf(“x=%d,y=%dn”,x,y);}
说明:因为if 语句执行时总是简单地测试其中作为条件的“表达式”的值是0还是非0,便可利用这种特性来简化程序设计。如对于:
if(expreion!=0)
完全可用
if(expreion)来代替;
同理:
if(!exp)语句;等价于:if(exp= =0)语句; 二、三目条件运算符及其表达式
1、条件运算符:?:
2、格式:e1?e2:e33、语义:判e1的值,为1时计算e2,否则计算e3;
如:max=(a>b)?a:b 等价于 if(a>b)max=a;
else max=b;
4、说明:
1)条件运算符的结合方向自右至左
如:a>b?a:c>d?c:d 等价于 a>b?a:(c>d?c:d)若int a=1,b=2,c=3,d=4;则表达式的值为________ 例:输入一个正整数i,输出第i个英文字母,若i大于26则输出一个„*‟。#include main(){ int i;
scanf(“%d”,&i);
i=(i
putchar(i);} 2)条件运算符的优先级仅高于逗号运算符与赋值运算符;
3)只有当if语句的真假均只执行一个赋值语句且给同一变量赋值时,才能用条件表达式取代;
如:if(a>b)max=a;
else max=b;思考:int x=1,y=0;x-->(y+x)?5:25>y++?‟1‟:‟2‟的值是______
三、switch 语句
语法1:switch(表达式)
{ case C1:语句序列1;
case C2:语句序列2;
……
case Cn:语句序列n;
default:语句序列n+1;
} 语法2:switch(表达式)
{ case C1:语句序列1;break;
case C2:语句序列2;break;
……
case Cn:语句序列n;break;
default: 语句序列n+1;break;
} 其中:
switch后括号中的表达式可以为任何类型;
C1至Cn 是常量表达式,一般是整数或字符,与switch中表达式的取值对应; default可缺省,当表达式e的值不是C1到Cn的情况。
注意两种语法的执行顺序!
例:switch(grade)
{ case „A‟: printf(“85~100n”);break;
case „B‟: printf(“70~84n”);break;
case „C‟: printf(“60~69n”);break;
case „D‟: printf(“
default: printf(“errorn”);break;
}
允许多个case共用一个执行语句 例:switch(ch){ case „0‟: case „1‟: case „2‟: case „3‟: case „4‟: case „5‟: case „6‟: case „7‟: case „8‟:
case „9‟:digit++;break;
case „ „: case „t‟: case „n‟: white++;break;
default: character++;}
break语句只能跳出一层,内外层情况常可相同; 如:
int x=1, y=0;switch(x){ case 1: switch(y)
{case 0: printf(“**1**n”);break;
case 1: printf(“**2**n”);break;
}
case 2: printf(“**3**n”);} 运行结果为:**1**
**3**
五、程序举例
例:求ax2+bx+c=0方程的根。分析:
(1)a=0,不是二次方程。
(2)b2-4ac=0,有两个相等的实根。(3)b2-4ac>0,有两个不等的实根。(4)b2-4ac
步骤三 课堂小结
1、两种选择语句:if-else、switch语句,注意选择条件的描述;
2、在编写程序过程中,注意分支的作用范围,及复合语句的运用。
步骤四 布置作业
1、上机作业(第五章课后练习):5.5、5.62、书面作业(第五章课后练习)5.3、5.9