c语言选择结构程序设计教案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a>b>c等价于(a>b)>c
2、逻辑运算符和逻辑表达式
(1).逻辑运算符
&&逻辑与
||逻辑或
!逻辑非
(2).逻辑表达式
用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。运算对象一般为关系表达式或逻辑量(常量或变量)。如;
x>10||x<100x==y&&a!=b5&&b
如:3>2&&4>3的结果为真
格式2:if条件then语句组1else语句组2
二、if中的条件表示
1.关系运算符和关系表达式
在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。比较两个量的运算符称为关系运算符。
(1).关系运算符:
操作符作用
>大于
>=大于等于
<小于
<=小于等于
==等于
!=不等于
关系运算符都是双目运算符,用于两个运算对象比较。
条件表达式的求解过程是:先求解表达式1,若表达式1的值不为0,则求解表达式2,表达式2的值就是条件表达式的值;若表
达式1的值为0,则求解表达式3,表达式3的值就是条件表达式的值。
如:
3>23+2:3*2表达式的值为5
’a’>’b’3!=0:7==8表达式的值为0
(3).优先级和结合方向
条件运算符的优先级高于赋值运算符,但低于逻辑运算符、关系运算符和算术运算符。如:
例3输入一个百分制成绩,输出其对应的等级。(90~100为A,80~99为B,70~79为C,60~69为D,0~59为E)
main()
{intx;chary;
scanf("%d",&x);
if(x>=90)y=’A’;
elseif(x>=80)y=’B’;
elseif(x>=70)y=’C’;
elseif(x>=60)y=’D’;
设有定义inta=3,b=2,c=1;则:
a>b的值为1
c==a的值为0
(3).优先级和结合方向
>、>=、<和<=的优先级相同;==和!=的优先级相同,两组运算符优先级从高到低的顺序是:
>>=<<===!=
关系运算符的优先级低于算术运算符。如:
a+b>c+d等价于(a+b)>(c+d)
关系运算符的结合方向都为左结合。如:
elsey=0;
elsey=-1;
printf("x=%fy=%d\n",x,y);
}
使用if语句时应注意以下几点:
①if后面圆括号内的表达式可以为任意类型,但一般为关系表达式或逻辑表达式。
②if和else后面的语句可以是任意语句。
③if(x)与if(x!=0)等价。
④if(!x)与if(x==0)等价。
详细内容
一、导入
讨论导入:请教学生翻译下面的英语句子
.
'llgotopark,elseI'llgotothemovie.
创造情景,使学生感觉新鲜和自信,学生可以翻译的准确无误。此过程中,教师引导学生注意if、then、else三个词的使用。
学生归纳:条件语句的一般形式:
格式1:if条件then语句组
对比实例,详细细化注意事项
通过实例,说明分支程序设计的思想,巩固前面所讲的内容。
重点
1.关系运算符和关系表达式
2.逻辑运算符和逻辑表达式
3.条件运算符及条件表达式
4.IF语句的格式使用
5.IF语句的嵌套
难点
复杂条件的表示;IF语句的正确使用。
问题提出
通过前面的顺序结构程序设计的介绍,我们都知道顺序结构程序设计按照自上而下的流程的顺序执行,但是在实际生活中,仅顺序结构是无法满足用户要求的,并不是所有的程序都是自上而下的顺序执行,而是根据条件有选择的执行。这就是我们将要学习的分支结构程序设计。
三个逻辑运算符优先级从高到低的顺序为:
!&&||
!的优先级高于算术运算符。&&和||的优先级低于关系运算符。如:
3>2+1&&4<2+1等价于(3>(2+1))&&(4<(2+1))
&&和||的结合方向为左结合,!的结合方向为右结合。如:
a>b&&c>d&&e>f等价于((a>b)&&(c>d))&&(e>f)
程序员应该养成良好的编程习惯,从书写格式上,注意if和else的层次关系,反映if与else的配对关系。以便提高程序的维护和理解。
如下if与else的配对举例。
例4已知函数
y=
编写程序,输入x,输出y值。
ma来自百度文库n()
{floatx;inty;
scanf("%f",&x);
if(x>=0)
if(x>0)y=1;
max=abs(c);
printf("Max=%f\n",max);
}
例7输入三个整数,按大小顺序输出
程序如下:
#include<>
main()
{inta,b,c,temp;
scanf(“%d,%d,%d”,&a,&b,&c);
if(a<b)
{temp=a;a=b;b=temp;}
if(a<c)
{temp=a;a=c;c=temp;}
注意:不能将“<=”写成“=<”,也不能将“>=”写成“=>”。
(2).关系表达式:
用关系运算符将两个运算对象连接起来的式子称为关系表达式。运算对象可以是常量,可以是变量,也可是表达式。如:
3>2b*b-4*a*c>=1e-6x==ya%b!=0
关系表达式的值:C语言规定用数值0代表关系运算结果为“假”,用数值1代表关系运算结果为“真”。关系表达式值的数据类型为整型。
五、举例说明
例5:读入一个整数,判断其能否被3整除。
#include<>
main()
{
inta;
printf("Enteraninteger“);
scan("%d",&a);/*输入一个整数*/
if(a%3==0)/*判断能否被3整除并输出相应信息*/
printf("%d能被3整除\n”,a);
else
3<4||4>5结果为真
!(3>2)的结果为假
逻辑表达式的值:用数值0代表逻辑运算结果为“假”,用数值1代表逻辑运算结果为“真”。在判断一个量(常量或变量)是“真”还是“假”时,C语言规定以0代表“假”,以非0代表“真”。
3<4&&4>5的结果为0
3<4||4>5结果为1
!(3>2)的结果为0
(3).优先级和结合方向
注意:
1.如果语句1或语句2有多于一条语句要执行时,必须使用"{"和"}"把这些语句包括在其中,此时条件语句形式为:
if(表达式)
{语句体1;}
else
{语句体2;}
2.分支程序的三种形式
(1)单分支:
例1输入一个整型数,输出该数的绝对值。
main()
{inta,;
scanf("%d",&a);
if(a<=0)
程序如下:
#include<>
#include〈〉
main()
{floata,b,c;
floatmax;
printf(“Enter3numbers\n”);
scanf("%f,%f,%f",&a,&b,&c);
if(abs(a)>abs(b))
max=abs(a);
else
max=abs(b);
if(max<abs(c))
a=-a;
printf("%d\n",a);
}
(2)上述是双分支
例2输入两个整型数,将平方值较大者输出。
main()
{inta,b,max;
scanf("%d%d",&a,&b);
if(a*a>b*b)
max=a;
else
max=b;
printf("%5d\n",max);
}
(3)多分支if语句是双分支if语句的一个扩充,其格式为:
选择结构程序设计(一)
说明
内容
1.关系运算符和关系表达式
2.逻辑运算符和逻辑表达式
3.条件运算符及条件表达式
4.IF语句
5.IF语句的嵌套
生活中的“十字路口”也属于选择结构类型。
举例说明
实例讲解说明
举例说明
通过讲解,向if语句过渡
通过与前面引入的例子重点说明其格式
结合实例说明其注意事项
通过图例说明嵌套的匹配关系。
!!!(a>b)等价于!(!(!(a>b)))
3、条件运算符及条件表达式
(1).条件运算符
:
C语言中唯一的一个三目运算符。
(2).条件表达式
条件表达式的一般形式为:
表达式1表达式2:表达式3
其中,表达式i(1≤i≤3)的类型任意,表达式1一般为关系表达式或逻辑表达式,表达式2和表达式3一般为同类型表达式。
在C中条件语句的一般形式为:
if(表达式)
语句1;
else
语句2;
执行过程如下:
如果表达式的值为非0(TURE)即真,则执行语句1,执行完语句1从语句2后开始继续向下执行;如果表达式的值为0(FALSE)即假,则跳过语句1而执行语句2。然后程序继续往下执行。所谓表达式是指关系表达式和逻辑表达式的结合式,关于表达式前面已作过介绍,这是不再重复。
if(b<c)
{temp=b;b=c;c=temp;}
printf(“%4d,%4d,%4d”,a,b,c);
}
六.总结
本讲对关系运算符和关系表达式、逻辑运算符和逻辑表达式做了详细的论述;并对条件运算符及条件表达式;通过对上面的论述,可以得到对选择结构条件的建立。用IF语句对选择结构来得到实现,IF语句的格式及其应用。
3>23+2:3*2等价于(3>2)(3+2):(3*2)
’a’>’b’3!=0:7==8等价于(’a’>’b’)(3!=0):(7==8)
条件运算符的结合方向为右结合。如:
注意:
·条件表达式中的表达式2和表达式3只有一个被求解。
·表达式1的类型可与表达式2和表达式3的类型不同。
三、分支结构表示——IF语句
elsey=’E’;
printf("y=%c\n",y);
}
四.If嵌套格式
if语句可以嵌套,即在一个if语句中又可以包含一个或多个if语句,一般形式为:
if(表达式1)
if(表达式2)语句1
else语句2
else
if(表达式3)语句3
else语句4
注意:在缺省花括号的情况下,if和else的配对关系是:从最内层开始,else总是与它上面最近的并且没有和其他else配对的if配对。
printf("%d不能被3整除\n”,a);
}
例6从键盘输入三个数,求出绝对值最大者并显示输出。
分析:可将输入的三个数存放于变量a,b,c中,先用a和b比较(绝对值比较),将大数存放于临时变量max中,再用max和c比较,再将大数存放于max中,这样进行比较之后得到的max一定为a,b,c中绝对值最大的数。
2、逻辑运算符和逻辑表达式
(1).逻辑运算符
&&逻辑与
||逻辑或
!逻辑非
(2).逻辑表达式
用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。运算对象一般为关系表达式或逻辑量(常量或变量)。如;
x>10||x<100x==y&&a!=b5&&b
如:3>2&&4>3的结果为真
格式2:if条件then语句组1else语句组2
二、if中的条件表示
1.关系运算符和关系表达式
在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。比较两个量的运算符称为关系运算符。
(1).关系运算符:
操作符作用
>大于
>=大于等于
<小于
<=小于等于
==等于
!=不等于
关系运算符都是双目运算符,用于两个运算对象比较。
条件表达式的求解过程是:先求解表达式1,若表达式1的值不为0,则求解表达式2,表达式2的值就是条件表达式的值;若表
达式1的值为0,则求解表达式3,表达式3的值就是条件表达式的值。
如:
3>23+2:3*2表达式的值为5
’a’>’b’3!=0:7==8表达式的值为0
(3).优先级和结合方向
条件运算符的优先级高于赋值运算符,但低于逻辑运算符、关系运算符和算术运算符。如:
例3输入一个百分制成绩,输出其对应的等级。(90~100为A,80~99为B,70~79为C,60~69为D,0~59为E)
main()
{intx;chary;
scanf("%d",&x);
if(x>=90)y=’A’;
elseif(x>=80)y=’B’;
elseif(x>=70)y=’C’;
elseif(x>=60)y=’D’;
设有定义inta=3,b=2,c=1;则:
a>b的值为1
c==a的值为0
(3).优先级和结合方向
>、>=、<和<=的优先级相同;==和!=的优先级相同,两组运算符优先级从高到低的顺序是:
>>=<<===!=
关系运算符的优先级低于算术运算符。如:
a+b>c+d等价于(a+b)>(c+d)
关系运算符的结合方向都为左结合。如:
elsey=0;
elsey=-1;
printf("x=%fy=%d\n",x,y);
}
使用if语句时应注意以下几点:
①if后面圆括号内的表达式可以为任意类型,但一般为关系表达式或逻辑表达式。
②if和else后面的语句可以是任意语句。
③if(x)与if(x!=0)等价。
④if(!x)与if(x==0)等价。
详细内容
一、导入
讨论导入:请教学生翻译下面的英语句子
.
'llgotopark,elseI'llgotothemovie.
创造情景,使学生感觉新鲜和自信,学生可以翻译的准确无误。此过程中,教师引导学生注意if、then、else三个词的使用。
学生归纳:条件语句的一般形式:
格式1:if条件then语句组
对比实例,详细细化注意事项
通过实例,说明分支程序设计的思想,巩固前面所讲的内容。
重点
1.关系运算符和关系表达式
2.逻辑运算符和逻辑表达式
3.条件运算符及条件表达式
4.IF语句的格式使用
5.IF语句的嵌套
难点
复杂条件的表示;IF语句的正确使用。
问题提出
通过前面的顺序结构程序设计的介绍,我们都知道顺序结构程序设计按照自上而下的流程的顺序执行,但是在实际生活中,仅顺序结构是无法满足用户要求的,并不是所有的程序都是自上而下的顺序执行,而是根据条件有选择的执行。这就是我们将要学习的分支结构程序设计。
三个逻辑运算符优先级从高到低的顺序为:
!&&||
!的优先级高于算术运算符。&&和||的优先级低于关系运算符。如:
3>2+1&&4<2+1等价于(3>(2+1))&&(4<(2+1))
&&和||的结合方向为左结合,!的结合方向为右结合。如:
a>b&&c>d&&e>f等价于((a>b)&&(c>d))&&(e>f)
程序员应该养成良好的编程习惯,从书写格式上,注意if和else的层次关系,反映if与else的配对关系。以便提高程序的维护和理解。
如下if与else的配对举例。
例4已知函数
y=
编写程序,输入x,输出y值。
ma来自百度文库n()
{floatx;inty;
scanf("%f",&x);
if(x>=0)
if(x>0)y=1;
max=abs(c);
printf("Max=%f\n",max);
}
例7输入三个整数,按大小顺序输出
程序如下:
#include<>
main()
{inta,b,c,temp;
scanf(“%d,%d,%d”,&a,&b,&c);
if(a<b)
{temp=a;a=b;b=temp;}
if(a<c)
{temp=a;a=c;c=temp;}
注意:不能将“<=”写成“=<”,也不能将“>=”写成“=>”。
(2).关系表达式:
用关系运算符将两个运算对象连接起来的式子称为关系表达式。运算对象可以是常量,可以是变量,也可是表达式。如:
3>2b*b-4*a*c>=1e-6x==ya%b!=0
关系表达式的值:C语言规定用数值0代表关系运算结果为“假”,用数值1代表关系运算结果为“真”。关系表达式值的数据类型为整型。
五、举例说明
例5:读入一个整数,判断其能否被3整除。
#include<>
main()
{
inta;
printf("Enteraninteger“);
scan("%d",&a);/*输入一个整数*/
if(a%3==0)/*判断能否被3整除并输出相应信息*/
printf("%d能被3整除\n”,a);
else
3<4||4>5结果为真
!(3>2)的结果为假
逻辑表达式的值:用数值0代表逻辑运算结果为“假”,用数值1代表逻辑运算结果为“真”。在判断一个量(常量或变量)是“真”还是“假”时,C语言规定以0代表“假”,以非0代表“真”。
3<4&&4>5的结果为0
3<4||4>5结果为1
!(3>2)的结果为0
(3).优先级和结合方向
注意:
1.如果语句1或语句2有多于一条语句要执行时,必须使用"{"和"}"把这些语句包括在其中,此时条件语句形式为:
if(表达式)
{语句体1;}
else
{语句体2;}
2.分支程序的三种形式
(1)单分支:
例1输入一个整型数,输出该数的绝对值。
main()
{inta,;
scanf("%d",&a);
if(a<=0)
程序如下:
#include<>
#include〈〉
main()
{floata,b,c;
floatmax;
printf(“Enter3numbers\n”);
scanf("%f,%f,%f",&a,&b,&c);
if(abs(a)>abs(b))
max=abs(a);
else
max=abs(b);
if(max<abs(c))
a=-a;
printf("%d\n",a);
}
(2)上述是双分支
例2输入两个整型数,将平方值较大者输出。
main()
{inta,b,max;
scanf("%d%d",&a,&b);
if(a*a>b*b)
max=a;
else
max=b;
printf("%5d\n",max);
}
(3)多分支if语句是双分支if语句的一个扩充,其格式为:
选择结构程序设计(一)
说明
内容
1.关系运算符和关系表达式
2.逻辑运算符和逻辑表达式
3.条件运算符及条件表达式
4.IF语句
5.IF语句的嵌套
生活中的“十字路口”也属于选择结构类型。
举例说明
实例讲解说明
举例说明
通过讲解,向if语句过渡
通过与前面引入的例子重点说明其格式
结合实例说明其注意事项
通过图例说明嵌套的匹配关系。
!!!(a>b)等价于!(!(!(a>b)))
3、条件运算符及条件表达式
(1).条件运算符
:
C语言中唯一的一个三目运算符。
(2).条件表达式
条件表达式的一般形式为:
表达式1表达式2:表达式3
其中,表达式i(1≤i≤3)的类型任意,表达式1一般为关系表达式或逻辑表达式,表达式2和表达式3一般为同类型表达式。
在C中条件语句的一般形式为:
if(表达式)
语句1;
else
语句2;
执行过程如下:
如果表达式的值为非0(TURE)即真,则执行语句1,执行完语句1从语句2后开始继续向下执行;如果表达式的值为0(FALSE)即假,则跳过语句1而执行语句2。然后程序继续往下执行。所谓表达式是指关系表达式和逻辑表达式的结合式,关于表达式前面已作过介绍,这是不再重复。
if(b<c)
{temp=b;b=c;c=temp;}
printf(“%4d,%4d,%4d”,a,b,c);
}
六.总结
本讲对关系运算符和关系表达式、逻辑运算符和逻辑表达式做了详细的论述;并对条件运算符及条件表达式;通过对上面的论述,可以得到对选择结构条件的建立。用IF语句对选择结构来得到实现,IF语句的格式及其应用。
3>23+2:3*2等价于(3>2)(3+2):(3*2)
’a’>’b’3!=0:7==8等价于(’a’>’b’)(3!=0):(7==8)
条件运算符的结合方向为右结合。如:
注意:
·条件表达式中的表达式2和表达式3只有一个被求解。
·表达式1的类型可与表达式2和表达式3的类型不同。
三、分支结构表示——IF语句
elsey=’E’;
printf("y=%c\n",y);
}
四.If嵌套格式
if语句可以嵌套,即在一个if语句中又可以包含一个或多个if语句,一般形式为:
if(表达式1)
if(表达式2)语句1
else语句2
else
if(表达式3)语句3
else语句4
注意:在缺省花括号的情况下,if和else的配对关系是:从最内层开始,else总是与它上面最近的并且没有和其他else配对的if配对。
printf("%d不能被3整除\n”,a);
}
例6从键盘输入三个数,求出绝对值最大者并显示输出。
分析:可将输入的三个数存放于变量a,b,c中,先用a和b比较(绝对值比较),将大数存放于临时变量max中,再用max和c比较,再将大数存放于max中,这样进行比较之后得到的max一定为a,b,c中绝对值最大的数。