第4章 选择结构程序设计_第1页
第4章 选择结构程序设计_第2页
第4章 选择结构程序设计_第3页
第4章 选择结构程序设计_第4页
第4章 选择结构程序设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、1目录页选择结构程序设计第4章n 条件表达式n if语句n switch语句n 选择结构程序设计本章本章要点要点2目录页4.1 关系运算符和关系表达式第4章 1 1关系运算符关系运算符 所谓“关系运算”实际上就是“比较运算”,即将两个数据进行比较,判定两个数据是否符合给定的关系。 关系运算符均为二目运算符,共有以下6种:4.1.1 关系运算符及其优先次序关系运算符及其优先次序 n 大于大于n= 大于或等于大于或等于nc-6;(a=3)=b;(ab)=(bc); 2关系表达式的值关系表达式的值逻辑值(逻辑值(“真真”或或“假假”) 由于语言没有逻辑型数据,所以,用整数由于语言没有逻辑型数据,所以

2、,用整数“”表示表示“逻辑真逻辑真”,用整数,用整数“0”表示表示“逻辑逻辑假假”。4.1.2 关系表达式关系表达式5目录页4.2 逻辑运算符和逻辑表达式第4章 逻辑运算符逻辑运算符 C语言提供语言提供3种逻辑运算符:种逻辑运算符:4.2.1 逻辑运算符及其优先顺序逻辑运算符及其优先顺序n & 逻辑与(相当于逻辑与(相当于“同时同时”)n | 逻辑或(相当于逻辑或(相当于“或者或者”)n ! 逻辑非(相当于逻辑非(相当于“否定否定”)6目录页4.2 逻辑运算符和逻辑表达式第4章 2逻辑运算符的运算优先级逻辑运算符的运算优先级 (1)在逻辑运算符中,逻辑非!的优先级最高,逻辑与)在逻辑运

3、算符中,逻辑非!的优先级最高,逻辑与&次之,逻辑或次之,逻辑或|最低。最低。 (2)与其它种类运算符的优先关系)与其它种类运算符的优先关系4.2.1 逻辑运算符及其优先顺序逻辑运算符及其优先顺序!(非)!(非) 算术运算符算术运算符关系运算符关系运算符&和和 | 赋值运算符赋值运算符7目录页4.2 逻辑运算符和逻辑表达式第4章 1逻辑表达式的概念逻辑表达式的概念 所谓逻辑表达式是指,用逻辑运算符将所谓逻辑表达式是指,用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。在个或多个表达式连接起来,进行逻辑运算的式子。在C语言中,可以用逻辑表达式表示多个条件的组合。语言中,可

4、以用逻辑表达式表示多个条件的组合。 例如,例如,(a+b)&(cy) printf(%d,x); 如果如果xy为真,则打印为真,则打印x的值,否则执行下面的语句。的值,否则执行下面的语句。4.3.1 if语句的三种形式语句的三种形式9目录页4.3 条件语句第4章 2. 第二种形式第二种形式: 双分支双分支if语句语句 格式:格式: if(表达式)(表达式) 语句语句1; else 语句语句2; 功能:首先判断表达式的值,若表达式的值为功能:首先判断表达式的值,若表达式的值为“真真”(非(非0),则执行语句),则执行语句1;否则,执行语;否则,执行语句句2。其流程图如图。其流程图如图4-

5、1(b)所示。)所示。 例如:例如: if(xy) printf(%d,x); else printf(%d,y); 4.3.1 if语句的三种形式语句的三种形式10目录页4.3 条件语句第4章 3 第三种形式:多分支第三种形式:多分支if语句语句 格式:格式: if(表达式(表达式1)语句)语句1; else if(表达式(表达式2)语句)语句2; else if(表达式(表达式n)语句)语句n; else 语句语句n+1; 功能:从表达式功能:从表达式1的值开始进行判断,当出现某个表达式的值为真时,则执行其对应分支的语的值开始进行判断,当出现某个表达式的值为真时,则执行其对应分支的语句,然

6、后跳出整个句,然后跳出整个if 语句,执行后续语句。若所有表达式的值都为语句,执行后续语句。若所有表达式的值都为“假假”(为(为0),则执行语句),则执行语句n+1。4.3.1 if语句的三种形式语句的三种形式11目录页4.3 条件语句第4章4.3.1 if语句的三种形式语句的三种形式图图4-2 第三种形式第三种形式if语句的流程图表示语句的流程图表示 12目录页4.3 条件语句第4章 一个一个if语句又包含一个或多个语句又包含一个或多个if语句,称为语句,称为if语句的嵌套。在语句的嵌套。在if语句中可以根据需要,用语句中可以根据需要,用if语句语句的三种形式进行互相嵌套。一般形式如下:的三

7、种形式进行互相嵌套。一般形式如下: 1if( ) if( ) 语句语句1 else 语句语句2 else if( ) 语句语句3 else 语句语句4 4.3.2 if语句的嵌套语句的嵌套13目录页4.3 条件语句第4章 2if( ) if( ) 语句语句1 内嵌内嵌if单分支单分支 else if( ) 语句语句2 else 语句语句34.3.2 if语句的嵌套语句的嵌套14目录页4.3 条件语句第4章 1条件运算符的格式:条件运算符的格式: 变量变量=表达式表达式1?表达式表达式2:表达式:表达式3; 执行过程:当表达式执行过程:当表达式1的值为的值为“真真”时,取表达式时,取表达式2的值

8、赋给变量;当表达式的值赋给变量;当表达式1的值为的值为“假假”时,取时,取表达式表达式3的值赋给变量。的值赋给变量。 即:无论表达式即:无论表达式1为为“真真”还是为还是为“假假”,都执行一个赋值语句且给同一个变量赋值。可以看出,都执行一个赋值语句且给同一个变量赋值。可以看出,用条件运算符用条件运算符“?:?:”的功能,可以实现的功能,可以实现if 语句的第语句的第2种格式。种格式。4.3.3 条件运算符(?条件运算符(? :):)15目录页4.3 条件语句第4章 2分析:分析: “表达式表达式3”又是一个条件表达式,因条件表达式其结合性为又是一个条件表达式,因条件表达式其结合性为“从右到左从

9、右到左”,所以,应该先计,所以,应该先计算右边的表达式算右边的表达式3,公式相当于:,公式相当于: q=wx?w:(yz?y:z); 执行步骤如下:执行步骤如下: 表达式表达式yz?y:z,因为,因为yx?w:3;因为;因为wx 的值为的值为“假假”,所以取,所以取3赋值给变量赋值给变量q。 运行结果:运行结果:q=34.3.3 条件运算符(?条件运算符(? :):)16目录页4.4 多分支语句第4章 if语句一般适用于两个分支的情况,即在两个分支中选择其中一个执行。尽管可以通过语句一般适用于两个分支的情况,即在两个分支中选择其中一个执行。尽管可以通过if语句语句的嵌套形式来实现多路选择的目的

10、,但这样做的结果使得的嵌套形式来实现多路选择的目的,但这样做的结果使得if语句的嵌套层次太多,降低了程序的语句的嵌套层次太多,降低了程序的可读性。可读性。C语言中的语言中的switch语句,提供了更方便地进行多路选择的功能。语句,提供了更方便地进行多路选择的功能。 一般形式:一般形式: switch(表达式)(表达式) case 常量表达式常量表达式1:语句语句1;break; case 常量表达式常量表达式2:语句语句2;break; case 常量表达式常量表达式n:语句语句n;break; default:语句语句n+1; 17目录页4.4 多分支语句第4章 执行过程:首先计算执行过程:

11、首先计算switch后面圆括号内表达式的值,若此值等于某个后面圆括号内表达式的值,若此值等于某个case后面的常量表达式后面的常量表达式的值,则转向该的值,则转向该case后面的语句去执行;若表达式的值不等于任何后面的语句去执行;若表达式的值不等于任何case后面的常量表达式的值,后面的常量表达式的值,则转向则转向default后面的语句去执行;如果没有后面的语句去执行;如果没有default部分,则将不执行部分,则将不执行switch语句中的任何语句,语句中的任何语句,直接转到直接转到switch语句后面的语句去执行。其流程图如图语句后面的语句去执行。其流程图如图4-3所示。所示。18目录页

12、4.4 多分支语句第4章 【例【例4.5】输入某年某月,计算出该月的的天数。】输入某年某月,计算出该月的的天数。 分析:利用分析:利用switch语句多个语句多个case的后面可以共用一组执行语句的规定来简化本程序。的后面可以共用一组执行语句的规定来简化本程序。 判断闰年的条件是:判断闰年的条件是: 某年能被某年能被4整除、但不能被整除、但不能被100整除,或者能被整除,或者能被400整除,条件为真整除,条件为真2月是闰年月是闰年29天,否则,非天,否则,非闰年闰年28天。一般用取余来判断某数能否被某数整除。天。一般用取余来判断某数能否被某数整除。 条件表达式条件表达式((year%4=0 a

13、nd year%100!=0)或)或 (year%400=0)为真是闰年,否则非闰年。为真是闰年,否则非闰年。19目录页4.4 多分支语句第4章程序思路与框架:程序思路与框架: main() 定义变量定义变量year,month; 输入年,月输入年,月scanf(%d%d”,&year,&month); switch(month) 1,3,5, 7, 8, 10,12月共用一个语句月共用一个语句days=31;break;; 4,6,9,11月共用一条语句月共用一条语句days=30;break; 2月进行判断是否闰年,闰年月进行判断是否闰年,闰年2月月29天,非闰年天,非闰年

14、2月月28天天 打印结果打印结果printf(“n days =%dn”,days); 20目录页4.4 多分支语句第4章程序代码程序代码(见教材(见教材72页)页)运行结果图运行结果图 21目录页4.4 多分支语句第4章 【例【例4.6】计算手机话费。神州行用户月租费】计算手机话费。神州行用户月租费30元,话费每分钟元,话费每分钟0.22元,全球通用户无元,全球通用户无月租费,话费每分钟月租费,话费每分钟0. 6元。要求输入一个月大约通话时间,分别计算出两种方式的费用,元。要求输入一个月大约通话时间,分别计算出两种方式的费用,判断出使用哪一种最合适。判断出使用哪一种最合适。 分析:用大约总通

15、话时间分别计算出两种不同的收费标准,神州行用变量分析:用大约总通话时间分别计算出两种不同的收费标准,神州行用变量x代替代替, 全球全球通用变量通用变量y代替,用分支语句判断哪种数值小,即价位低的就建议采用。代替,用分支语句判断哪种数值小,即价位低的就建议采用。22目录页4.4 多分支语句第4章程序代码:程序代码:#include main() float a,x,y; printf(n请您输入一个月大约通话总时数:请您输入一个月大约通话总时数:); scanf(%f,&a); /*输入大约通话总时数输入大约通话总时数*/ x=30+0.22*a; /*计算神州行费用计算神州行费用*/

16、y=0.6*a; /*计算全球通费用计算全球通费用*/ printf (神州行话费为神州行话费为: %.2fn,x); printf (全球通话费为全球通话费为: %.2fn,y); if (xy) /*进行条件判断进行条件判断 */ printf(建议您使用神州行。建议您使用神州行。n); else printf(建议您使用全球通。建议您使用全球通。n);23目录页4.4 多分支语句第4章 【例例4.7】某市不同型号的出租车某市不同型号的出租车3公里的起步价和计费分别为:夏利公里的起步价和计费分别为:夏利7元元/公里,公里,3公里以外公里以外2.1元元/公里;富康公里;富康8元元/公里,公里

17、,3公里以外公里以外2.4元元/公里;桑塔纳公里;桑塔纳9元,元,3公里以外公里以外2.7元元/公里。编程:公里。编程:从键盘输入乘车的车型及行车公里数,输出应付车资。从键盘输入乘车的车型及行车公里数,输出应付车资。 分析:可设三个变量,分别表示出租车的车型、行车公里数和应付车资,根据乘车的车型分析:可设三个变量,分别表示出租车的车型、行车公里数和应付车资,根据乘车的车型和行车公里数,计算出应付的车资。和行车公里数,计算出应付的车资。24目录页4.4 多分支语句第4章程序思路与框架:程序思路与框架:main( )定义乘车的车型定义乘车的车型cx,定义行车公里数变量定义行车公里数变量gl、应付车

18、资变量、应付车资变量cf ;设计用菜单提示的方式输入数据:设计用菜单提示的方式输入数据:1-夏利夏利 2-富康富康 3-桑塔纳桑塔纳输入车型(输入车型(1-3): scanf(%d,&cx); 输入行车公里数输入行车公里数: );scanf(%f,&gl);多分支语句多分支语句switch(cx) 1: 夏利车资计算夏利车资计算; 2: 富康车资计算富康车资计算; 3: 桑塔纳车资计算;桑塔纳车资计算; 打印应付金额打印应付金额printf(nt应付车资为应付车资为%.1fn,cf);25目录页4.4 多分支语句第4章程序代码:程序代码:#include main( ) int

19、 cx; /*定义乘车的车型变量定义乘车的车型变量cx */ float gl, cf; /*定义行车公里数变量定义行车公里数变量gl、应付车资变量、应付车资变量cf */ printf(nt出租车收费出租车收费n); printf(t1-夏利夏利n t2-富康富康n t3-桑塔纳桑塔纳n); printf(t请输入车型(请输入车型(1-3): ); scanf(%d,&cx); printf(nt请输入行车公里数请输入行车公里数: ); scanf(%f,&gl); switch(cx) case 1: if(gl=3) cf=7.0; else cf=7+(gl-3)*2.

20、1 ;break; 26目录页4.4 多分支语句第4章程序代码:程序代码: case 2: if(gl=3) cf=8.0; else cf=8+(gl-3)*2.4 ;break; case 3: if(gl12,x=200+(n-12)*20 (3)外校学生:)外校学生: n12,x=600 n12,x=600+(n-12)*6028目录页4.4 多分支语句第4章 程序思路与框架:程序思路与框架:main() 定义变量定义变量int n,x,number,p; 用菜单方式设计输入提示:用菜单方式设计输入提示: 学生收费管理系统学生收费管理系统; = = = = = = = = = = = = 1-本校全日制学生本校全日制学生 2- 本校夜大学生本校夜大学生 3- 外校学生外校学生 = = = = = = = = = = = = 请输入学生的类别(请输入学生的类别(13) 输入学生的类别:输入学生的类别:scanf(%d,&p); 29目录页4.4 多分支语句第4章 程序思路与框架:程序思路与框架: 输入学生的编号和学分输入学生的编号和学分:scanf(%d,%d,&number,&n); 用用if条件语句进行判断:条件语句进行判断: 如果类型如果类型=1,不收费;,不收费; 否则,如果类型否则,如果类型=2,收费计算;,收费计算; 否则类型否

温馨提示

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

评论

0/150

提交评论