第03章-选择结构程序设计PPT文档格式.ppt
- 文档编号:15556977
- 上传时间:2022-11-04
- 格式:PPT
- 页数:40
- 大小:348.50KB
第03章-选择结构程序设计PPT文档格式.ppt
《第03章-选择结构程序设计PPT文档格式.ppt》由会员分享,可在线阅读,更多相关《第03章-选择结构程序设计PPT文档格式.ppt(40页珍藏版)》请在冰豆网上搜索。
(year%100!
=0)|(year%400=0)11/4/20227二二逻辑运算及其表达式逻辑运算及其表达式注:
(1)在语言中逻辑表达式的值只有或两种值。
其中,表示真”,表示“假“逻辑”与”和“或”运算表aba&
ba|b0000100101011111“非”运算表a!
a0110:
同时为真才为真,否则为假:
同时为真才为真,否则为假。
:
同时为假才为假,否则为真。
!
取反。
11/4/20228二二逻辑运算及其表达式逻辑运算及其表达式注:
(2)在语言中可以用一个非零值代表“真”,用代表“假”。
但关系运算和逻辑运算结果中只能用表示“真”,用表示“假”。
如:
例1、若有定义语句inta=5;
则表达式a=10的值是什么?
表达式的值:
例2、若有定义语句inta=5;
则下列表达式的值是什么?
a+5+a5例3、如何表达:
num1num2n2)&
(y=n3n4)”后,x、y的值=?
11/4/202211三、ifif语句语句例例11输入3个整数num1、num2、num3,求最大值。
算法设计要点:
(1)任取一个数预置为max(最大值);
(2)用其余的数num依次与max比较:
如果nummax,则maxnum。
比较完所有的数后,max中的数就是最大值。
11/4/202212例例22编写一程序,判断一个年份year(4位十进制数)是否闰年。
闰年的条件是:
能被4整除、但不能被100整除,或者能被400整除。
11/4/202213算法设计要点算法设计要点:
(1)如果X能被整除,则余数为,即如果X%Y=,则表示能被整除。
(2)根据闰年的条件可知:
“能被4整除、但不能被100整除”表示为:
(year%4=0)&
=0);
“能被400整除”表示为:
year%400=0;
两个条件之间是逻辑或的关系:
=0)|(year%400=0)。
11/4/2022141if语句的格式1if(表达式表达式)语句序列语句序列1;
else语句序列语句序列2;
必须用“(”和“)”括起来if语句的一部分,必须与if配对使用。
语句序列仅由一条语句构成时,也可不使用复合语句形式(即去掉花括号)11/4/202215当“表达式”的值:
非非0(逻辑真),执行语语句句组组1,然后跳过语语句句组组2,转向下一条语句;
否否则则,执行语语句组句组2。
11/4/2022162.if语句格式2当“表达式”的值:
非非00(逻辑真),执行语语句句组组11;
否否则则,直接转向执行下一条下一条。
11/4/202217三、ifif语句语句注:
(1)执行的方式为:
判断if后表达式的值,若为非零值(真)则执行if控制的语句序列,执行完序列后直接跳过else控制的语句序列往后执行(即不执行else控制的语句序列);
若为零(假)则直接执行else控制的语句序列(跳过if控制的语句序列)。
(2)if后有一个表达式且该表达式必须用小括号括起,另外else后也不能有表达式。
(3)if和else后分别有且只能有一条语句,若要控制多条语句则必须用一对花括号将这多条语句括起来使其构成一个复合语句。
当语句序列或语句序列中只有一条语句时,可以将省略。
(4)if语句中if控制的语句序列部分不能省略。
(5)else关键词不能单独使用,必须依附于if11/4/202218三、ifif语句语句3if语句的嵌套if语句的嵌套在“语句序列1”或(和)“语句序列2”中,又包含有if语句的情况。
else子句与if的匹匹配配原原则则:
与在它上上面面、距距它它最最近近、且尚尚未未匹匹配配的if配对。
建议建议:
将内嵌的if语句,一律用花括号括起来。
嵌套的if主要功能:
实现多选一”。
而且任何嵌套的if都可以改造为与之等价的多个“简洁版”的if语句,重点是在条件表达式的表示上。
11/4/2022194说明
(1)if后面的“表表达达式式”:
除关关系系(逻逻辑辑)表达式外,也允许是整型、实型、字符型等其它类型的数据。
(2)在语句组1和语句组2中,每个语语句句后后面面的的分分号不可少号不可少!
例如:
if(num1num2)max=num1;
elsemax=num2;
11/4/202220三、ifif语句语句补充:
条件运算符(唯一的三目运算符):
格式:
表达式?
表达式:
表达式执行方式是先判断表达式的值,若表达式为非零值(真)则执行表达式并将表达式的值作为整个条件表达式的值(不进行表达式的运算);
若表达式为零(假)则执行表达式并将表达式的值作为整个条件表达式的值(不进行表达式的运算)。
注:
(1)条件运算符?
是语言中唯一一个三目运算符,它的运算符优先级别比赋值运算符高,结合方向为自右向左。
max=ab?
a:
bmax=(ab)?
b)ab?
cd?
c:
d(ab)?
(cd)?
d)2)表达式、的值不要求具有相同类型,最后结果的类型为表达式、中较高类型的一种。
xy?
1:
1.5若x大于y则结果为1.0,不是为3)条件运算符表达式可以用if语句转换(在有些情况可以)c=ab?
b;
if(ab)c=a;
elsec=b;
11/4/202221格式:
switch(表达式表达式)case常量表达式常量表达式1:
子句1;
break;
case常量表达式2:
子句2;
.case常量表达式n:
子句n;
default:
语句组n+1;
四、四、switch语句(多选语句(多选一)一)11/4/202222注:
(1)switch后必须用小括号将表达式括起。
(2)case后常量表达式的值必须为整型或字符型,不能有变量和逗号运算符。
Switch后的表达式可以含有变量,若其值为浮点型则系统会自动将其转成整型(直接截取小数部分)。
(3)各case后常量不能出现相同的值。
(4)case和default只是一个入口标号,不起中断作用。
它们的顺序可以任意颠倒,但是顺序颠倒后执行结果不一定相同。
11/4/202223注:
(5)执行过程是:
程序执行到switch时计算小括号内表达式的值,若该值与某个case后的值相同时,则程序直接跳到该case所在的地方往后执行;
若没有一个case后的值与switch后的值相同,当有default时程序直接跳到default所在的地方往后执行,当没有default时程序直接跳出switch.只要执行了switch中的某条子句,则程序会一直往后执行直到switch中的所有语句执行结束,即使遇到新的case或default程序也会接着往后执行新的case和default的语句,只有遇到break语句才会提前中断switch的执行。
(6)case和default必须出现在switch语句中。
(7)case后可以没有任何语句而是直接紧跟另一个case,即相当于多个case共用一些语句。
11/4/202224执行流程执行流程指定指定breakbreak语句语句11/4/202225执行流程执行流程缺省缺省break语句语句case后面的常常量量表表达达式式仅起语句标标号号作用,并不进行条件判断条件判断。
缺省break语句时,系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,其执行流程如下图所示:
11/4/20222611/4/2022274.54.5*选择结构程序设计选择结构程序设计例已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(单位:
元):
profit1000没有提成;
1000profit2000提成10%;
2000profit5000提成15%;
5000profit10000提成20%;
10000profit提成25%。
11/4/202228算法设计要点:
将利利润润profit与提提成成的关系,转换成某些整整数数与提提成成的关系。
分析本题可知,提成比例的变化点,都是1000的整数倍,如果将利润利润profit整除整除1000,则当:
profit1000对应0、11000profit2000对应1、22000profit5000对应2、3、4、55000profit10000对应5、6、7、8、9、1010000profit对应10、11、12、思考:
如何解决相邻两个区间的重叠问题?
思考:
11/4/202229最简单的方法:
利润profit先减减11(最小增量),然后再整除1000即可:
profit-1-11000对应01000profit-1-12000对应12000profit-1-15000对应2、3、45000profit-1-110000对应5、6、7、8、910000profit-1-1对应10、11、12、11/4/202230#includestdio.h#includeconio.hvoidmain()longprofit;
intgrade;
floatsalary=500;
printf(Inputprofit:
);
scanf(%ld,&
profit);
grade=(profit1)/1000;
/*将(利润-1)/1000*/11/4/202231switch(grade)case0:
/*profit1000*/case1:
salary+=profit*0.1;
/*1000profit2000*/case2:
case3:
case4:
salary+=profit*0.15;
/*2000profit5000*/case5:
case6:
case7:
case8:
case9:
salary+=profit*0.2;
/*5000profit10000*/default:
salary+=profit*0.25;
/*10000profit*/printf(salary=%.2fn,salary);
getch();
11/4/202232本本章章要要点点1.语言用整数整数表示“逻辑真逻辑真”,用整数整数表示“逻辑假逻辑假”,所以关系表达式关系表达式还可以参与其它其它种类的运算运算。
2.非逻辑运算对象的真假判定:
,则
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 03 选择 结构 程序设计