C语言选择结构课件_第1页
C语言选择结构课件_第2页
C语言选择结构课件_第3页
C语言选择结构课件_第4页
C语言选择结构课件_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章选

2023/6/41本章主要内容

4.1工作场景导入

4.2关系运算符与关系表达式

4.3逻辑运算符与逻辑表达式

4.4if语句

4.5switch语句

4.6选择结构程序设计举例

4.7回到工作场景2023/6/424.1工作场景导入2023/6/43【工作场景】现有南京一家公司,其员工的保底薪水为500,该公司各部门的利润(profit,取整数)与利润提成都遵循以下原则:当profit小于等于1000时,没有提成,否则有提成;利润小于等于2000时提成10%;利润小于等于5000时候提成15%;利润小于等于10000时提成20%;而超过10000时一律提成25%。试根据所给利润编程计算出员工该领的薪水,输出结果大致如下图所示。2023/6/44【引导问题】(1) 如何表示判断信息以及对应的结果?(2) 如何运用if语句或switch语句实现?(3) 多分支语句如何使用?2023/6/454.2关系运算符与关系表达式2023/6/464.2.1关系运算符

关系运算符用于比较大小,所谓关系运算实际上是“比较运算”,即进行两个数的比较,判断比较的结果是否满足给定的条件。C语言提供了6种关系运算符,如下表所示。2023/6/47(1)

<、<=、>、>=的优先级别相同;==、!=级别相同,前4种高于后两种。(2) 关系运算符的优先级低于算术运算符。(3) 关系运算符的优先级高于赋值运算符。(4) 关系运算符是双目运算符,具有自左向右的结合性。2023/6/484.2.2关系表达式

关系表达式是指用关系运算符将两个表达式连接起来进行关系运算的式子。其一般形式为:表达式1关系运算符

表达式2关系运算符两边的运算对象可以是任意合法的表达式,如关系运算式、赋值表达式或逻辑表达式。关系表达式的求值计算规定如下。若关系表达式成立,其值为1或非0,否则为0;当一个关系表达式中同时出现关系运算符、算术运算符、赋值运算符时,必须按照先算术运算符,再关系运算符,最后赋值运算符的顺序求整个表达式的值。2023/6/494.3逻辑运算符与逻辑表达式2023/6/410C语言中提供了3种逻辑运算符:&&

(逻辑与)||

(逻辑或)!

(逻辑非)1.逻辑运算的值逻辑运算的值也为“真”、“假”两种,用“1”和“0”来表示,规则如下。与运算(&&):当且仅当两个运算的值都“真”时,结果为真,否则结果假。或运算(||):两个运算的值有一个为“真”时,结果为真,全假时结果为假。非运算(!):当运算值“真”时,运算结果为假,否则为真。4.3.1逻辑运算符2023/6/411逻辑运算符的真值表如下表所示。2023/6/4122.逻辑运算符的优先级逻辑与(&&)高于逻辑或(||)的优先级,而逻辑非的优先级高于&&。例如a&&b||(9-8)&&!8,先计算!8的结果,然后在按照由左向右的顺序执行运算。我们学过了逻辑运算符、关系运算符、赋值运算符和算术运算符,下面将它们放在一起比较,结果如下:

! 高算术运算符关系运算符

&&

||

赋值运算符 低2023/6/413用逻辑运算符将运算对象连接而成的式子称为逻辑表达式。逻辑表达式的值是式中各种逻辑运算的最后值,即最终整个表达式的结果。与关系表达式一样,逻辑表达式的运算结果也为1或0(真或假)。逻辑表达式的一般形式为:表达式

逻辑运算符

表达式例如:3>4&&7%2m*n>m||m!a&&04.3.2逻辑表达式2023/6/4144.4if语句

2023/6/4151.单分支选择语句语句格式:if(表达式){语句;}语句功能:根据表达式的结果来决定是否执行格式中的语句。如果表达式的结果为真,则执行语句,否则执行下一条语句,如右图所示。

4.4.1if语句的三种格式例如:从键盘输入一个整数,如果是偶数,则更新为它的两倍,输出此数。2023/6/4162.双分支选择语句语句格式:if(表达式)语句1;else语句2;语句功能:如果表达式的值为真(即非0)则执行语句1,否则执行语句2。双分支选择语句的执行过程如右图所示。例如:从键盘输入一个整数,如果是偶数,则更新为它的两倍,否则减少为原来的一半。输出此数。2023/6/417练习从键盘输入两个整数,判断两者的大小关系。已知,一般车辆购置税计算公式为:车辆裸车总价÷1.17×10%,而购买小排量汽车(1.6L及以下)的购置税的税率为购买大排量汽车税率的一半。编写程序,计算购买汽车时候需要缴纳的购置税为多少。2023/6/4183.多分支选择语句语句格式:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;...else语句n;语句功能(elseif结构):用于实现多分支情况的处理。即在多个分支中仅执行表达式为非0值的那个if下的语句;若所有表达式都是0值,则执行最后一个else下的语句。最后一个else及其下面的语句也可以不存在。多分支选择语句的结构如右图所示。2023/6/419输入学生的成绩,根据分数输出学生的等级:90~100(优秀)、80~89(良好)、70~79(中等)、60~69(及格)、60分以下(不及格)。#include<stdio.h>intmain(){ intcj;

scanf("%d",&cj);

if(cj<0||cj>100) {

printf("数据输入错误\n"); exit0; }

if(cj>=90&&cj<=100)

printf(“优秀\n"); elseif(cj>=80&&cj<90)

printf(“良好\n"); elseif(cj>=70&&cj<80)

printf(“中等\n"); elseif(cj>=60&&cj<70)

printf("及格\n"); else

printf("不及格\n"); return0;}2023/6/420语句说明:if语句可以任意嵌套(即嵌套的位置任意,是不固定的)。4.4.2嵌套选择语句

嵌套具有else子句的if语句if(表达式1)if(表达式2)

语句序列1else

语句序列2嵌套不含else子句的if语句

if(表达式1)

语句序列1elseif(表达式2)

语句序列2一般形式if(表达式1)if(表达式2)

语句序列1else

语句序列2elseif(表达式3)

语句序列3else

语句序列52023/6/421if~else配对原则:缺省{}时,else总是和它上面离它最近的未配对的if配对if(……)if(……)if(……)else…...else…...else…...2023/6/422例:if(a==b)if(b==c)

printf(“a==b==c”);else

printf(“a!=b”);修改:if(a==b){if(b==c)

printf(“a==b==c”);}else

printf(“a!=b”);实现if~else正确配对方法:加{}2023/6/423请判断以下程序正误:例:有一函数

y=–1(x<0)0(x=0)1(x>0)程序2:将程序1的if语句改为:

#include<iostream.h>

voidmain()

{intx,y;

scanf(“%d”,&x);

if(x>=0)

if(x>0)

y=1;

else

y=0;

else

y=-1;

printf("x=%d,y=%d“,x,y);

}程序1:

#include<iostream.h>

voidmain()

{intx,y;

scanf(“%d”,&x);

if(x<0)

y=–1;

elseif(x==0)

y=0;

else

y=1;

printf("x=%d,y=%d“,x,y);

}2023/6/424程序4:将程序1的if语句改为:#include<iostream.h>

voidmain()

{intx,y;

scanf(“%d”,&x);

y=0;

if(x>=0)

if(x>0)y=1;elsey=-1;

printf("x=%d,y=%d“,x,y);

}

程序3:将程序1的if语句改为:#include<iostream.h>

voidmain()

{intx,y;

scanf(“%d”,&x);

y=-1;

if(x!=0)

if(x>0)y=1;elsey=0;

printf("x=%d,y=%d“,x,y);

}2023/6/425条件运算符由“?:”组成,是C语言中唯一的三目运算符,因此要有三个运算对象。定义形式如下:表达式1?表达式2:表达式3条件表达式的执行过程为:当表达式1为真时,以表达式2的值作为整个条件表达式的值;反之,以表达式3的值为整个表达式的值。在if语句中,如果无论表达式是真还是假,都只给同一个变量赋值,这时就可以用简单的条件运算符来处理.4.4.3条件运算符2023/6/4264.5switch语句2023/6/4275.3.1switch多选择语句2023/6/4285.3.1switch多选择语句多选择语句switch的格式:switch(表达式){caseE1:

语句序列1;[break;]

caseE2:

语句序列2;[break;]

……caseEn:

语句序列n;[break;]

[default:

默认语句序列;]}语句说明:首先计算表达式的值,然后依次与每一个case中常量表达式的值进行比较,一旦发现了某个匹配的值,就执行该case后面的语句组,直到执行了break语句为止。若没有匹配的值,则执行default后面的语句组。2023/6/429说明:switch后面表达式的值必须是整型或字符型。E1,E2,…En是常量表达式,且值必须互不相同。每个case语句的冒号后面可以是0条或多条语句,多条语句时,可以不加{}。各case和default的顺序可以是任意的。允许多个case语句使用同一语句序列.每个case后面语句序列里的break语句可有可无,但执行效果不同default语句不是必须的2023/6/430练习从键盘输入1-7中的任意一个数字,然后输出它对应的星期数。从键盘上输入月份(1-12),显示该月属于哪个季节?春季:3-5;夏季:6-8;秋季:9-11;冬季:12-2;输入学生的成绩,输出学生的等级:90~100(优秀)、80~89(良好)、70~79(中等)、60~69(及格)、60分以下(不及格)2023/6/4314.6选择结构程序设计举例2023/6/432例

从键盘输入3个小写字母,按照字母的顺序输出。例如:输入sdj,输出应该为djs。程序代码如下:#include<stdio.h>main(){charc1,c2,c3,ch;scanf("%c,%c,%c",&c1,&c2,&c3);//挨个比较得到最大最小值if(c1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论