




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LOGO网络与计算中心网络与计算中心第第3 3章分支条件选择流程控制程序设计章分支条件选择流程控制程序设计本 章 概 述1学 习 目 标2主 要 内 容3本 章 小 结4LOGO第第3 3章分支条件选择流程控制程序设计章分支条件选择流程控制程序设计网络与计算中心网络与计算中心3.1 if分支条件选择结构13.2 switch开关语句23.3 条件分支选择结构的综合应用34LOGO本章概述本章概述n顺序结构的程序虽然能解决输入、计算、输出等问题,但它不能解决程序执行过程中先做判断再选择的操作。n本章以实例为引导,循序渐进地介绍单分支、双分支和多分支条件选择等三种if流程控制语句和开关语句(swi
2、tch语句)的结构形式和应用特点等方面知识,通过对本章知识的学习,掌握C+的三大流程控制结构中分支条件选择结构的基本语法和应用知识。网络与计算中心网络与计算中心LOGO利用海伦公式计算三角形面积利用海伦公式计算三角形面积网络与计算中心网络与计算中心)()(2/ )(clblallscbal输入a=3,b=4,c=5后,结果是多少?输入输入a=1,b=1,c=3呢?呢?为什么?怎么办?为什么?怎么办?LOGO3.1.13.1.1单分支条件选择结构语句单分支条件选择结构语句单分支结构的语法格式与执行流程语法格式及执行流程:语法格式及执行流程: if(if(表达式表达式) ) 单语句单语句或if(i
3、f(表达式表达式) 语句块语句块 网络与计算中心网络与计算中心假(0)表达式语句真(1)LOGO逻辑运算、逻辑表达式逻辑运算:逻辑运算:用于判断分析,运算符包括用于判断分析,运算符包括关系关系和和逻辑逻辑运算符。运算符。关系运算符:关系运算符:包括:包括: (大于)、(大于)、(大于等于)、(大于等于)、 (小于)、(小于)、(小(小于等于);于等于);= = =(等于)和!(等于)和!= =(不等于)(不等于) 。关系运算符完。关系运算符完成两个操作数大小的比较,结果为逻辑值成两个操作数大小的比较,结果为逻辑值true(true(真真) )或或falsefalse(假)(假)。逻辑值与整数的
4、对应关系是什么?逻辑值与整数的对应关系是什么?逻辑值能参与运算吗?逻辑值能参与运算吗?LOGO关系表达式:例如:例如:a+bc+d /*等同于等同于(a+b)(c+d) */y=ab /*计算计算ab的值的值0或或1赋给赋给y*/abc /*等同于等同于(ab)c,先求,先求ab 的值,的值, 再将结果再将结果0或或1与与c比较大小比较大小*/由关系运算符连接的表达式。是一种简单的逻辑表达式。由关系运算符连接的表达式。是一种简单的逻辑表达式。值为值为truetrue或或falsefalse。数学式数学式abc ,对应的关系表达式为什么?,对应的关系表达式为什么?LOGO设有定义设有定义 flo
5、at a=3.2;int b=5; ;则则: : 3ab/结果是结果是?其运算其运算过程如下:过程如下:a5b3.23T, 即即1T即即1LOGO运算运算符符名名 称称语语 义义!逻辑非逻辑非, 单目单目操作数的值为真,则结果为假操作数的值为真,则结果为假;反之结反之结果为真果为真&逻辑与逻辑与,双目双目当两个操作数全为真时,结当两个操作数全为真时,结果为真,否则为假果为真,否则为假;|逻辑或逻辑或,双目双目两个操作数中有一个为真,则结果为两个操作数中有一个为真,则结果为真真;逻辑运算符:逻辑运算符:包括:包括:! !、&和和|,语义见下表。,语义见下表。LOGO由逻辑运算符连接的表达式,由逻
6、辑运算符连接的表达式,其操作数和运算其操作数和运算结果均为结果均为逻辑量逻辑量。操作数可以是表达式,只要其值是。操作数可以是表达式,只要其值是逻辑量逻辑量,如关系表,如关系表达式。达式。 由于由于逻辑值逻辑值和和整数整数之间的之间的对应关系,对应关系,也允许也允许整型整型和和字字符型符型操作数进行操作数进行逻辑运算逻辑运算:21&021&0/逻辑与,逻辑与,2121与与0 0,结果,结果? ?21|021|0/逻辑或,逻辑或,2121或或0 0,结果,结果? ?!21!21/逻辑非,逻辑非,2121的非,结果的非,结果? ?运算结果同样可以作为一个运算结果同样可以作为一个整数整数参与其他运算。
7、参与其他运算。 逻辑表达式:逻辑表达式:逻辑表达式计算时,逻辑非优先级最高,关系运算其次,逻辑表达式计算时,逻辑非优先级最高,关系运算其次,逻辑与和逻辑或最低。逻辑与和逻辑或最低。 LOGO3.1.13.1.1单分支条件选择结构语句单分支条件选择结构语句单单分支结构应用程序分支结构应用程序举例举例【例例3.33.3】编程求两个数中大数并输出。编程求两个数中大数并输出。#include using namespace std;int main() int a,b,max; coutab; max=a; if (maxb) max=b; coutmaxendl; return 0;网络与计算中心网
8、络与计算中心LOGO3.1.2 3.1.2 双分支条件选择结构语句双分支条件选择结构语句双双分支结构的语法格式与执行分支结构的语法格式与执行流程流程n双分支条件选择结构中使用C+语言规定的关键字有if和else两种n这两个关键字需要一起配对使用才能完成双分支条件选择的功能网络与计算中心网络与计算中心if(表达式) 分支语句块1;else 分支语句块2;LOGO3.1.2 3.1.2 双分支条件选择结构语句双分支条件选择结构语句2.双分支结构应用程序举例n【例例3.43.4】汽车超速判断程序。汽车超速判断程序。 #include using namespace std; int main() i
9、nt velocity; coutvelocity; if(velocity60) cout”超速!“endl; else cout”正常!“60) cout”超速!“endl; else cout”正常!“endl; 网络与计算中心网络与计算中心LOGO3.1.2 3.1.2 双分支条件选择结构语句双分支条件选择结构语句3.条件表达式(?:运算符)网络与计算中心网络与计算中心 x=x=?:3通常用条件表达式构成一个赋值语句,通常用条件表达式构成一个赋值语句,其一般形式如下其一般形式如下 max=(ab)?amax=(ab)?a:b b运用条件表达式可写出如下语句:运用条件表达式可写出如下语句
10、: x=x=?:?:5多个条件表达式连在一起:多个条件表达式连在一起:LOGO3.1.33.1.3多分支条件选择语句多分支条件选择语句1.多分支结构的语法格式与执行流程n多分支条件选择结构语法格式如下:多分支条件选择结构语法格式如下:网络与计算中心网络与计算中心多分支条件选择结构中使用关键字只有if、else两种ifif(表达式(表达式1 1) 分支语句块分支语句块1 1; else if(else if(表达式表达式2)2) 分支语句块分支语句块2 2; else if(else if(表达式表达式n-1)n-1) 分支语句块分支语句块n-1n-1;elseelse 分支语句块分支语句块n;
11、n; LOGO3.1.33.1.3多分支条件选择语句多分支条件选择语句多分支条件选择语句的语法含义:网络与计算中心网络与计算中心表达式1分支语句1表达式2表达式n-1分支语句2分支语句n-1分支语句n假(0)假(0)假(0)假(0)真(1)真(1)真(1)真(1)LOGO3.1 if3.1 if分支条件选择结构分支条件选择结构n顾客购买的商品的总额大于等于400元时,用户享受商场9折优惠n客户购买商品总金额达到245元以上而少于400元时,用户享受商场95折优惠n客户购买商品总金额达到125元以上低于245元时,用户享受商场97折优惠。网络与计算中心网络与计算中心LOGO【例例3.13.1】用
12、程序实现商场打折问题的程序。用程序实现商场打折问题的程序。#includeusing namespace std;int main() doubleamount; coutamount; if(amount = 400) cout 用户实际支付购买商品的金额总数为:amount*0.9= 245) cout 用户实际支付购买商品的金额总数为:amount*0.95= 125) cout 用户实际支付购买商品的金额总数为:amount*0.97endl; else cout 用户实际支付购买商品的金额总数为:amountendl; return 0;网络与计算中心网络与计算中心LOGO3.1.3
13、3.1.3多分支条件选择语句多分支条件选择语句2. 2. 多分支结构应用程序举例多分支结构应用程序举例n【例例3.53.5】有三个乒乓球,其中两个球的重量相同,要求能用最少的有三个乒乓球,其中两个球的重量相同,要求能用最少的天平称球次数找到那个重量不一样的球。天平称球次数找到那个重量不一样的球。#includeusing namespace std;int main() int a,b, c; cinabc; if(a=b) /如果条件成立,说明c球就是要找的球 cout”c球就是要找的球!n”; else if(a=c) /如果条件成立,说明b球就是要找的球 coutb球就是要找的球!n;
14、else cout=0&x=100) if(x=60) cout成绩合格!endl; else cout成绩不合格!endl;else cout输入数据错误=0&x=100)if(x=60)cout成绩合格!endl;elsecout成绩不合格!endl;elsecout输入数据错误endl;LOGO3.1.43.1.4条件分支结构中的条件分支结构中的if if嵌套问题嵌套问题n【例例3.73.7】输入输入x x,输出,输出y y。x x和和y y满足数学分段函数满足数学分段函数关系如下:关系如下:网络与计算中心网络与计算中心LOGO表达式else if(x1)else if(-5=x&x1)
15、 else if(x1)else if(-5=x1) 表达式y=2*x+5y=2x+5 y=3*x-2y=3x-2 注注意意3.1.43.1.4条件分支结构中的条件分支结构中的if if嵌套问题嵌套问题#includeusing namespace std;int main() doublex,y; cout“请输入x的值:”x; if(x-5) y=x; else if(x1) y=2*x+5; else if(x4) y=x+6; else y=3*x-2; cout”计算结果为:”y;网络与计算中心网络与计算中心LOGO说明:n 这是一个典型的if语句嵌套结构。n 如果不使用括号,那么i
16、f和else的对应关系会很容易变乱。n 第8,12,16行开始的三个双分支结构代码书写的形式。当条件语句的语句块中只有单条语句时,将这一条语句写到条件判断表达式和else的后面并用空格隔开,。3.1.43.1.4条件分支结构中的条件分支结构中的if if嵌套问题嵌套问题【例例3-83-8】输入三个数输入三个数x, x, y,zy,z, ,然后按从大然后按从大到小输出。到小输出。#includeusing namespace std;int main() double x,y,z; cinxyz; if(x=y&x=z) coutx=z) couty z; /分支结构中的语句块只有一条语句时,可
17、这样写 else coutz =x&y=z) couty=z) coutx z; else coutzx; else coutz=y) coutx y; else couty x; LOGO3.2 switch3.2 switch开关语句开关语句 在C+语言程序中,运用多级if-else是为了那些可能需要进行多级判断才能做出选择的情况。如前面3.1.4节中例3.7所讲的例子。如果正好x的值是大于且等于4时,程序照样还得从最开始的条件分支语句if(表达式)开始进行判断,一直要做到最后的else分支结构才会结束整个的分支结构中所有条件判断的过程。为了简化这种多级判断的过程,C+语言又提供了另一种多
18、分支结构的形式,称作switch开关语句。网络与计算中心网络与计算中心LOGO3.2.1 switch3.2.1 switch开关语句开关语句1. switch1. switch语句的格式特点及执行流程语句的格式特点及执行流程nswitch开关语句的几个关键字:switch、case、break、default。switch(整型变量或字符型变量) case 常量表达式1 : 分支语句序列一;break; case 常量表达式2 : 分支语句序列二;break; . case 常量表达式n: 分支语句序列n; break; default :最后分支语句序列; /此右大括号为switch语句的
19、结束符网络与计算中心网络与计算中心case之后可以接常量数值、字符、枚举类型常量case之后不能接变量或带有变量的表达式case之后不能接实型数或带有实数的常量表达式LOGO3.2.1 switch3.2.1 switch开关语句开关语句n【例例3.93.9】网站访问方式调查程序。要求模拟一个网站访问方式调查程序。要求模拟一个网上调查。它要求网友输入数字以选择自己是如网上调查。它要求网友输入数字以选择自己是如何知道当前访问的网页的。程序根据网友输入,何知道当前访问的网页的。程序根据网友输入,打出相应结果。打出相应结果。n程序分析程序分析网络与计算中心网络与计算中心LOGO3.2.1 switc
20、h3.2.1 switch开关语句开关语句#include using namespace std;int main() int whatWay; cout 请输入序号,选择您如何来到本网站。 endl; cout 1) - 通过百度搜索引擎 endl; cout 2) - 通过网友微博 endl; cout 3) - 通过网友微信 endl; cout 4) - 通过报刊、杂志 endl; cout 5) - 通过其他方法 whatWay; switch(whatWay) 网络与计算中心网络与计算中心 case 1 : cout 您是通过百度搜索引擎来到本网站的。 endl;break; c
21、ase 2 : cout 您是通过网友微博来到本网站的。 endl;break; case 3 : cout 您是通过网友微信来到本网站的。 endl;break; case 4 : cout 您是通过报刊、杂志来到本网站的。 endl;break; case 5 : cout 您是通过其他方法来到本网站的。 endl;break; default : cout 错误的选择!请输入15的数字做出选择。 endl;getchar();return 0;LOGO3.2.1 switch3.2.1 switch开关语句开关语句注意:如何读懂switch结构中的case语句?case 2 : cout
22、 通过网友微博来到本网站的。endl; break;网络与计算中心网络与计算中心读上面的程序段:读上面的程序段:n 程序输出“通过网友微博来到本网站的。”这行内容之后,遇上break;于是跳出整个switch语句。n 如果没有遇到break语句,则继续执行下面的case语句中的可执行语句,直到遇见break语句时,结束switch结构。LOGO3.2.1 switch3.2.1 switch开关语句开关语句2. switch2. switch开关语句的特点开关语句的特点n1)switch中的变量类型 只能是整型和字符类型 doublewhatWay =0.123; switch(whatWay
23、) /错误!变量whatway是double数据类型, 不满switch的要求。 网络与计算中心网络与计算中心2)switch结构中case之后的数值switch(whatWay)case 2-1 : /正确case a-2: /错误必须是常量表达式,而a-2是表达式case 2.0: /错误必须是int或char字符常量. /在switch的每个case与常量值之后需要一个冒号。LOGO3.2.1 switch3.2.1 switch开关语句开关语句2. switch2. switch开关语句的特点开关语句的特点n3)breakbreak的作用。的作用。case 1 :cout 您是通过百度
24、搜索 引擎来到本网站的。 endl;case 2 :cout 您是通过朋友介绍 来到本网站的。 = 32 & i=48) : /错误 .n 不能在不能在casecase里写里写条件,条件,更更不能做一个范围的条不能做一个范围的条件件限制限制5 5)可在各个)可在各个casecase中使用大括号中使用大括号来表明组成独立的复合语句。来表明组成独立的复合语句。switch(whatWay) case 1 : int a=20;/错误。由于case内部不明确范围,编译器无法在此处使用变量申明。 . case 2 : .LOGO3.2.2 switch3.2.2 switch应用实例应用实例n【例例3
25、.103.10】输入一个完整的四则运算的表达输入一个完整的四则运算的表达式并计算出结果,然后以整个表达式等于计式并计算出结果,然后以整个表达式等于计算结果的形式输出。算结果的形式输出。#includeusing namespace std;int main() double a,b; char oper; cout 请输入一个表达式:aoperb; switch (oper) case +: coutaoperb=a+bendl; break;case -: coutaoperb=a-bendl; break;网络与计算中心网络与计算中心n switch语句风格代码平均缩进程度减少,阅读代码的
26、时候更简洁易懂。n switch语句只能判断表达式是否等于某个值,如果需要判断变量是否处于某个范围。则必须使用if条件判断语句结构来辅助完成。 case *: coutaoperb=a*bendl; break; case /: if(b!=0) cout aoperb=a/bendl; else cout 出错啦!endl; break; default: cout 输入内容格式错误!endl; return 0;LOGO3.2.2 switch3.2.2 switch应用实例应用实例【例例3.113.11】将输入学生考试成绩,要求程序给出对学生的评判。要求输入成绩在大于等于80分以上,程序
27、输出提示为“Good!”,输入成绩在高于“60”至低于“80”之间,程序输出提示为Soso!”,若输入成绩为60分以下,则程序输出提示为Please work harder!”。网络与计算中心网络与计算中心#includeusing namespace std;int main() int mark; cout mark; switch(mark/20) case 5: if (mark100)/100到119的情况都是mark/20=5,所以要用if语句再次过滤 cout 成绩输入错误! =0)/同样要用if过滤负数 cout 请努力学习! endl; break; default:/其它情
28、况都是出错 coutERROR! endl; return 0;网络与计算中心网络与计算中心 else cout”优秀!”endl; break; case 4: cout 优秀! endl; break;case 3: cout 良好! endl; break;case 2:/如果case没有对应的break,会运行到下一个case中。3.2.2 switch3.2.2 switch应用实例应用实例使用switch开关语句比使用if-else条件分支的程序冗长一些。引出此程序目的是要大家掌握在switch开关语句中嵌套使用其他条件分支语句的方法。比较LOGO3.33.3条件分支选择结构的综合
29、应用条件分支选择结构的综合应用n【例例3.123.12】运用多分支结构运用多分支结构(if-else if-else if-elseif-else形式)形式)修改修改例例3-123-12程序。程序。#includeusing namespace std;int main()int mark,flag;cout mark; flag=mark/20;if (mark100|mark0) /用if语句过滤掉不满足条件的输入cout 成绩输入错误! endl;else if(flag=5)cout 优秀! endl;else if(flag=4)cout 优秀! endl;else if(flag=
30、3)cout 良好! endl;elsecout 请努力学习! endl;return 0;网络与计算中心网络与计算中心通常使用switch开关语句编写多分支条件选择类程序。但是,如果将接受输入数值的变量mark和flag的数据类型改为实数类型(如:double),而且,输入的数值也为实数,这种情况就不能使用switch开关语句来实现,必须运用if条件分支语句来实现。LOGO3.33.3条件分支选择结构的综合应用条件分支选择结构的综合应用n【例例3.133.13】一元二次方程求解问题的程序设计。一元二次方程求解问题的程序设计。网络与计算中心网络与计算中心if(a=0) if(a=0) /若若a
31、=0a=0,则不构成一元二次方程的情况,则不构成一元二次方程的情况 if(b!=0) if(b!=0) / /若若a=0a=0,则剩下的一元一次方程中,则剩下的一元一次方程中b b不能为不能为0 0,否则出错否则出错 x=-(double)c/(double)b; x=-(double)c/(double)b; if(x=0) if(x=0) /一元一次方程一元一次方程bx+cbx+c=0=0中中c=0c=0时时 x=-x; x=-x; coutcoutxxendlendl; ; else else coutcoutxxendlendl; ; else else coutcout数据输入错误数
32、据输入错误!n;!n; # #include include #include #include using namespace std;using namespace std;void main()void main() double double sqrtsqrt(double x);(double x); intint a,b,ca,b,c; ; / /a,b,ca,b,c分为一元二次方程的三个系数分为一元二次方程的三个系数 double x1,x2,x,e,d,g,f; double x1,x2,x,e,d,g,f; cincinabc; abc; / /输入三个系数的值输入三个系数的
33、值 d=b d=b* *b-4b-4* *a a* *c; c; /计算根中计算根中deltadelta表达式的值表达式的值LOGO3.33.3条件分支选择结构的综合应用条件分支选择结构的综合应用网络与计算中心网络与计算中心else if(d0) else if(d0) /若若a a不为不为0 0,则构成一元二次方程情况,则构成一元二次方程情况 d=-d;d=-d;e=e=sqrtsqrt(d);(d);g=-(double)b/(2g=-(double)b/(2* *(double)a);(double)a);f=e/(2f=e/(2* *a);a);if(g!=0)if(g!=0)cout
34、coutx1=g+fx1=g+fi inx2=g+fnx2=g+fi ienendldl; ;elseelse coutcoutftfftfendlendl; ; else if(d=0)else if(d=0) x1=x2=-b/(2 x1=x2=-b/(2* *a);a); coutcoutx1=x2= x1x1=x2= x1endlendl; ; elseelsee=e=sqrtsqrt(d);(d);x1=(-x1=(-b+eb+e)/(2)/(2* *a);a);x2=(-b-e)/(2x2=(-b-e)/(2* *a);a);coutcoutx1= x1tx2= x1= x1tx2
35、= x2x2endlendl; ; LOGO3.33.3条件分支选择结构的综合应用条件分支选择结构的综合应用n【例例3.143.14】中国有句俗语叫三天打渔两天晒网。某人从2011年1月1日起开始三天打渔两天晒网,问这个人在以后的某一天中是打渔还是晒网。网络与计算中心网络与计算中心LOGO3.33.3条件分支选择结构的综合应用条件分支选择结构的综合应用#include #include using namespace std;int main() int year,month,day; int days=0; int YearOrignal=2000; int TotaldaysDate1=0; int YearDate1=2011; int MonthDate1=1; int DayDate1=1; int nYear1,nYear2; nYear1=YearDate1-YearOrignal; switch(MonthDate1-1) case 12:TotaldaysDate1+=31; case 11:TotaldaysDate1+=30;网络与计算中心网络与计算中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- CPMP考试技巧与试题及答案
- 2024年CPSM考前冲刺的建议试题及答案
- 2024年CPMM重要干货试题及答案
- 2024国际物流师职能分析试题及答案
- 如何提升仓储管理的服务水平试题及答案
- 仓储货物跟踪系统应用试题及答案
- 物流行业的未来技术趋势试题与答案
- 细胞呼吸的步骤与意义试题及答案
- 2024年CPSM考试综合复习指导试题及答案
- 四川省内江市2024年中考数学试卷附真题解析
- 江苏省高速公路施工标准化技术指南-工地建设篇
- 新版人音版小学音乐一年级下册全册教案
- DB50T 1690-2024 老鹰茶种植技术规范
- 2023年河北邮政招聘笔试真题
- 2024年山东省临沂市中考模拟考试物理试题(A)(附答案解析)
- 2022风光互补路灯工程施工组织设计
- 进场材料报验资料收集和送检教程(市政工程)
- DL∕T 1522-2016 发电机定子绕组内冷水系统水流量 超声波测量方法及评定导则
- JBT 106-2024 阀门的标志和涂装(正式版)
- 意识障碍的判断及护理
- 人教PEP版英语六年级下册 Unit 3 大单元教学设计
评论
0/150
提交评论