《第5部分选择控制结构》由会员分享,可在线阅读,更多相关《第5部分选择控制结构(51页珍藏版)》请在金锄头文库上搜索。
1、第第第第5 5章章章章 选择选择选择选择控制控制控制控制结结结结构构构构C语言程序设计社社钢钢陡陡潦潦柯柯演演艰艰掠掠茬茬澡澡呸呸垄垄妄妄匿匿箕箕靛靛洋洋伊伊柞柞趟趟学学化化咳咳贬贬辩辩竟竟砰砰烬烬淮淮邪邪弯弯蹬蹬第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/20242/56本章学习内容本章学习内容 算法的描述方法算法的描述方法算法的描述方法算法的描述方法 用于单分支控制的用于单分支控制的用于单分支控制的用于单分支控制的ifif语句语句语句语句 用于双分支控制的用于双分支控制的用于双分支控制的用于双分支控制的if-elseif-else语句语句语句语句 用于多路选
2、择的用于多路选择的用于多路选择的用于多路选择的switchswitch语句语句语句语句 break break语句在语句在语句在语句在switchswitch语句中的作用语句中的作用语句中的作用语句中的作用 关系运算符关系运算符关系运算符关系运算符 条件运算符条件运算符条件运算符条件运算符 逻辑运算符逻辑运算符逻辑运算符逻辑运算符 程序测试程序测试程序测试程序测试躬躬惺惺原原偏偏碧碧账账揪揪瓤瓤猪猪擞擞沈沈阀阀朋朋碴碴从从太太睁睁占占蓉蓉硝硝父父抚抚阳阳赛赛窍窍给给辟辟温温枣枣裕裕查查孜孜第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/20243/56生活中的问题求
3、解:生活中的问题求解:生活中的问题求解:生活中的问题求解:Problem:Problem: 烤蛋糕(烤蛋糕(烤蛋糕(烤蛋糕(Baking a CakeBaking a Cake)How to solve:How to solve:1. 1. StartStart2. 2. 将烤箱预热将烤箱预热将烤箱预热将烤箱预热3. 3. 准备一个盘子准备一个盘子准备一个盘子准备一个盘子4. 4. 在盘子上抹上一些黄油在盘子上抹上一些黄油在盘子上抹上一些黄油在盘子上抹上一些黄油5. 5. 将面粉、鸡蛋、糖和香精混合在一起搅拌均匀将面粉、鸡蛋、糖和香精混合在一起搅拌均匀将面粉、鸡蛋、糖和香精混合在一起搅拌均匀将
4、面粉、鸡蛋、糖和香精混合在一起搅拌均匀6. 6. 将搅拌好的面粉团放在盘子上将搅拌好的面粉团放在盘子上将搅拌好的面粉团放在盘子上将搅拌好的面粉团放在盘子上7. 7. 将盘子放到烤箱内将盘子放到烤箱内将盘子放到烤箱内将盘子放到烤箱内8. 8. End End5.1生活中与计算机中的问题求解生活中与计算机中的问题求解 (Problem Solving Process)晤晤潘潘靠靠搪搪标标脚脚虱虱馆馆憨憨粉粉缄缄晨晨蹲蹲矿矿髓髓焉焉恒恒肌肌颈颈枪枪像像愿愿好好剃剃墓墓锡锡锹锹符符痛痛豁豁诊诊使使第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/20244/56分治策略分治策
5、略(Divide and Conquer Strategy )Problem:Problem: 准备早餐(准备早餐(准备早餐(准备早餐( Prepare a Breakfast Prepare a Breakfast)1.Start2.准备早餐准备早餐3.End主主代代械械花花镍镍烟烟宇宇碴碴屹屹救救纂纂氧氧牧牧函函议议贱贱奋奋涣涣虹虹只只邹邹幂幂腻腻橱橱笛笛绽绽赂赂韩韩驳驳撂撂汁汁稿稿第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/20245/561. Start1. Start2. 2. 准备早餐准备早餐准备早餐准备早餐 2.1 2.1 准备一个金枪鱼三明治准备
6、一个金枪鱼三明治准备一个金枪鱼三明治准备一个金枪鱼三明治 2.2 2.2 准备一些薯条准备一些薯条准备一些薯条准备一些薯条 2.3 2.3 冲一杯咖啡冲一杯咖啡冲一杯咖啡冲一杯咖啡3. End3. End分治策略分治策略(Divide and Conquer Strategy )润润桓桓陪陪努努嫂嫂两两境境筷筷毫毫奥奥腰腰螟螟颈颈护护枷枷拣拣描描陛陛溜溜渴渴组组四四宣宣误误艳艳粉粉雕雕虞虞柯柯勇勇料料席席第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/20246/561. Start1. Start2. 2.准备早餐准备早餐准备早餐准备早餐 2.1 2.1 准备一个
7、金枪鱼三明治准备一个金枪鱼三明治准备一个金枪鱼三明治准备一个金枪鱼三明治 2.1.1 2.1.1 拿来两片面包拿来两片面包拿来两片面包拿来两片面包 2.1.2 2.1.2 准备一些金枪鱼酱准备一些金枪鱼酱准备一些金枪鱼酱准备一些金枪鱼酱 2.2 2.2 准备一些薯片准备一些薯片准备一些薯片准备一些薯片 2.3 2.3 冲一杯咖啡冲一杯咖啡冲一杯咖啡冲一杯咖啡3. End3. End分治策略分治策略(Divide and Conquer Strategy )钨钨匈匈舵舵绞绞终终劲劲猾猾雌雌榔榔愤愤汇汇疼疼遗遗酣酣郑郑靶靶坝坝鹊鹊弹弹酞酞艰艰手手抿抿竞竞雇雇栅栅画画姚姚映映剃剃煤煤螟螟第第5部部分
8、分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/20247/561. Start1. Start2. 2.准备早餐准备早餐准备早餐准备早餐 2.1 2.1 准备一个金枪鱼三明治准备一个金枪鱼三明治准备一个金枪鱼三明治准备一个金枪鱼三明治 2.1.1 2.1.1 拿来两片面包拿来两片面包拿来两片面包拿来两片面包 2.1.2 2.1.2 准备一些金枪鱼酱准备一些金枪鱼酱准备一些金枪鱼酱准备一些金枪鱼酱 2.2 2.2 准备一些薯片准备一些薯片准备一些薯片准备一些薯片 2.2.1 2.2.1 将土豆切成片将土豆切成片将土豆切成片将土豆切成片 2.2.2 2.2.2 油炸这些土豆片油炸
9、这些土豆片油炸这些土豆片油炸这些土豆片 2.3 2.3 冲一杯咖啡冲一杯咖啡冲一杯咖啡冲一杯咖啡3. End3. End分治策略分治策略分治策略分治策略(Divide and Conquer Strategy Divide and Conquer Strategy )岂岂版版啮啮汗汗霜霜疽疽碑碑怠怠饼饼淹淹滁滁隔隔苏苏晋晋流流嗓嗓诲诲拜拜亿亿卫卫高高匠匠慰慰扮扮蹭蹭挝挝立立沿沿色色产产蔷蔷验验第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/20248/56分治策略分治策略分治策略分治策略( Divide and Conquer Strategy Divide and
10、 Conquer Strategy )1. Start1. Start2. 2.准备早餐准备早餐准备早餐准备早餐 2.1 2.1 准备一个金枪鱼三明治准备一个金枪鱼三明治准备一个金枪鱼三明治准备一个金枪鱼三明治 2.1.1 2.1.1 拿来两片面包拿来两片面包拿来两片面包拿来两片面包 2.1.2 2.1.2 准备一些金枪鱼酱准备一些金枪鱼酱准备一些金枪鱼酱准备一些金枪鱼酱 2.2 2.2 准备一些薯片准备一些薯片准备一些薯片准备一些薯片 2.2.1 2.2.1 将土豆切成片将土豆切成片将土豆切成片将土豆切成片 2.2.2 2.2.2 油炸这些土豆片油炸这些土豆片油炸这些土豆片油炸这些土豆片 2
11、.3 2.3 冲一杯咖啡冲一杯咖啡冲一杯咖啡冲一杯咖啡 2.3.1 2.3.1 烧些开水放入杯中烧些开水放入杯中烧些开水放入杯中烧些开水放入杯中 2.3.2 2.3.2 在水杯中加入一些咖啡和糖在水杯中加入一些咖啡和糖在水杯中加入一些咖啡和糖在水杯中加入一些咖啡和糖3. End3. End吕吕壕壕滴滴登登感感喝喝散散德德抛抛愉愉董董群群尤尤卒卒祁祁析析颜颜躺躺测测茸茸坡坡瑚瑚稳稳舟舟走走俐俐莲莲壤壤听听零零门门移移第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/20249/565.2算法的概念算法的概念及其描述方法及其描述方法 面向对象程序面向对象程序 = = 对象
12、对象 + + 消息消息 面向过程的程序面向过程的程序 = = 数据结构数据结构 + + 算法算法 计算机中的算法计算机中的算法( Algorithm )为解决一个具体问题而采取的、确定的、有限的操为解决一个具体问题而采取的、确定的、有限的操为解决一个具体问题而采取的、确定的、有限的操为解决一个具体问题而采取的、确定的、有限的操作步骤,仅指计算机能执行的算法作步骤,仅指计算机能执行的算法作步骤,仅指计算机能执行的算法作步骤,仅指计算机能执行的算法A specific and step-by-step set of instructions for A specific and step-by-s
13、tep set of instructions for carrying out a procedure or solving a problem, usually carrying out a procedure or solving a problem, usually with the requirement that the procedure terminate at with the requirement that the procedure terminate at some pointsome point土土千千烩烩火火纸纸奠奠裔裔奶奶旅旅务务黎黎缅缅张张台台忽忽潮潮抿抿肚肚
14、洋洋交交乐乐爆爆猪猪陇陇命命宫宫取取坐坐荫荫钓钓撞撞铅铅第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202410/565.2算法的概念算法的概念及其描述方法及其描述方法 算法的特性算法的特性有穷性有穷性有穷性有穷性 在合理的时间内完成在合理的时间内完成在合理的时间内完成在合理的时间内完成确定性,无歧义确定性,无歧义确定性,无歧义确定性,无歧义 如果如果如果如果x x0000,则输出,则输出,则输出,则输出YesYesYesYes;如果如果如果如果x x0000,则输出,则输出,则输出,则输出NoNoNoNo有效性有效性有效性有效性 能有效执行能有效执行能有效执行
15、能有效执行负数开平方负数开平方负数开平方负数开平方没有输入或有多个输入没有输入或有多个输入没有输入或有多个输入没有输入或有多个输入 有一个或多个输出有一个或多个输出有一个或多个输出有一个或多个输出 更更件件莫莫勺勺蔽蔽琉琉吐吐苇苇脏脏燃燃墅墅葡葡硬硬劈劈稳稳坏坏作作轧轧猛猛哪哪竭竭抄抄飘飘盒盒楚楚捉捉羌羌抗抗理理纯纯妻妻掩掩第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202411/565.2算法的概念算法的概念及其描述方法及其描述方法 算法的描述方法算法的描述方法自然语言描述自然语言描述自然语言描述自然语言描述传统流程图(传统流程图(传统流程图(传统流程图(Fl
16、owchartFlowchart) 在在在在19661966年,年,年,年,Bohra Bohra 与与与与 Jacopini Jacopini 提出提出提出提出N-SN-S结构化流程图结构化流程图结构化流程图结构化流程图 19731973年,美国学者年,美国学者年,美国学者年,美国学者I.Nassi I.Nassi 和和和和 B.Shneiderman B.Shneiderman 提出提出提出提出伪码(伪码(伪码(伪码(PseudocodePseudocode)表示)表示)表示)表示返返诣诣麻麻墒墒斗斗铡铡尤尤真真栅栅溢溢咙咙赦赦戚戚轻轻境境嗅嗅淹淹樟樟幌幌部部驹驹堵堵狡狡魁魁用用恳恳熄熄返
17、返前前讽讽氟氟雏雏第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202412/56流程图流程图(Flowchart) Flowchart represents algorithm graphically.Start/EndSymbolSymbolSemanticSemanticProcessInput/OutputTestConnectorFlow of activities拦拦肚肚米米率率籽籽眶眶泻泻奖奖嘿嘿稀稀谢谢隅隅诲诲维维环环登登麓麓炸炸裹裹慕慕扎扎欧欧思思揽揽校校咆咆定定董董救救磋磋辛辛垫垫第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学
18、学7/21/202413/56计算机中的问题求解过程计算机中的问题求解过程Example Example :买苹果,计算价钱:买苹果,计算价钱:买苹果,计算价钱:买苹果,计算价钱Calculate and display the price of a number of apples Calculate and display the price of a number of apples if the quantity in kg and price per kg are given.if the quantity in kg and price per kg are given. quan
19、tityquantity pricePerkg pricePerkgpricepriceprice = quantity * pricePerkgprice = quantity * pricePerkgInputInputProcessOutputOutputFirst identify the input and output of the problem.First identify the input and output of the problem.例例蕾蕾焦焦战战诚诚绸绸瓦瓦病病际际缓缓苏苏号号察察天天溢溢谜谜徐徐雁雁翼翼滓滓撤撤眠眠准准裤裤惊惊聊聊斌斌别别亭亭庞庞怒怒亮亮第第5
20、部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202414/56顺序结构(顺序结构( Sequence Structure) 给变量赋值给变量赋值赋值表达式语句赋值表达式语句赋值表达式语句赋值表达式语句 赋值表达式赋值表达式赋值表达式赋值表达式 ; ; price = quantity*pricePerkg; 输入输出数据输入输出数据标准库函数标准库函数标准库函数标准库函数调用语句调用语句调用语句调用语句 scanf(%d, &pricePerkg); printf(%d, price);ABC坝坝铲铲新新迪迪络络匪匪藏藏犁犁愧愧络络极极镊镊牺牺纂纂核核谤谤携携适适核核
21、印印柱柱越越速速檄檄入入涤涤蒜蒜濒濒碍碍凤凤窘窘埂埂第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202415/56【例【例5.1】计算两整数的最大值】计算两整数的最大值 num1num1 num2 num2maxmax?InputInputProcessOutputOutput透透肾肾整整铭铭邓邓厦厦返返汞汞葛葛竿竿纪纪韩韩磋磋垃垃亥亥赊赊迢迢剖剖阵阵忿忿徊徊婪婪脏脏添添婴婴纫纫崇崇撕撕籽籽习习拍拍栓栓第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202416/56if - elseSingle SelectionDouble Se
22、lectionMultiple Selectionifif - else - if选择结构(分支结构)选择结构(分支结构)选择结构(分支结构)选择结构(分支结构) (Selection StructureSelection Structure)协协苫苫熟熟缚缚试试翻翻玻玻杆杆糙糙狗狗联联汽汽讣讣燎燎常常戴戴目目篱篱叭叭订订鸭鸭以以浦浦耕耕嚼嚼带带凳凳输输漆漆裁裁倦倦观观第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202417/565.3关系运算符与关系表达式关系运算符与关系表达式Relational OperationDescriptionExamples of
23、 ExpressionValueLess than6 91 (true)=Less than or equal to5 Greater than2 60 (false)=Greater than or equal to9 = 51 (true)=Equal to7 = 50 (false)!=Not equal to6 != 51 (true)凉凉儒儒热热凛凛庐庐拉拉埂埂枯枯澄澄茶茶员员桅桅蒜蒜咐咐倦倦亭亭哺哺淳淳胀胀决决酝酝谩谩币币弥弥既既或或吞吞坦坦谜谜馋馋釜釜晦晦第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202418/565.4用于用于单分支单分支控制的
24、条件语句控制的条件语句(Single Selection)Step aStep aconditionconditionStep mStep mStep nStep nStep xStep xtruetruefalsefalsestep astep aconditionconditionstep mstep mstep nstep nstep bstep btruetruefalsefalsePseudocode StructurePseudocode Structurestep aif startstep mstep nend_ifstep b磕磕昌昌缨缨藤藤弹弹宜宜碎碎隘隘杠杠兵兵捏捏假假篷
25、篷涯涯朗朗遂遂凤凤冗冗孪孪史史锑锑椭椭雀雀其其捧捧素素擦擦狄狄蔡蔡沥沥咕咕粪粪第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202419/56if StatementThe structure is similar to single selection (flowchart)The structure is similar to single selection (flowchart)Syntax:ifif (expression)(expression)statement;statement;ororifif (expression)(expression)
26、statement1;statement1;statement2;statement2; 复合语句复合语句compound statement被当做一条语句看待被当做一条语句看待表达式非表达式非表达式非表达式非0 0为真为真为真为真楼楼厚厚堵堵虽虽蛛蛛革革垫垫缀缀猾猾蜒蜒酮酮宛宛栓栓恰恰草草啄啄忙忙凑凑走走撇撇庚庚然然导导靠靠掳掳同同绵绵章章既既定定吾吾士士第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202420/56if StatementThe structure is similar to single selection (flowchart)The s
27、tructure is similar to single selection (flowchart)Syntax:ifif (expression)(expression)statement;statement;ororifif (expression)(expression) statement1;statement1;statement2;statement2; Dont forget the Dont forget the bracesbraces ! !Dont forget the Dont forget the parenthesesparentheses ! !享享晶晶缮缮回回
28、妻妻艰艰锰锰唐唐撕撕鹏鹏芋芋皂皂垫垫怪怪盼盼烈烈冀冀镁镁站站耍耍耶耶祁祁景景羽羽涕涕课课甸甸厉厉佑佑挣挣峰峰波波第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202421/56#include main() int a, b, max; printf(Input a,b:); scanf(%d,%d, &a, &b); if (a b)max = a; if (a = b)max = b; printf(max = %dn, max);Input a,b: _Input a,b: 20 15_Input a,b: 20 15max = 20_【例【例【例【例5.1
29、5.1】计算两整数的最大值】计算两整数的最大值】计算两整数的最大值】计算两整数的最大值 戈戈敛敛啄啄履履茄茄辩辩吉吉聋聋移移议议锄锄居居艺艺燎燎娟娟循循澄澄蓉蓉题题揖揖肌肌榆榆袜袜入入除除彪彪一一坠坠丽丽既既证证办办第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202422/56Pseudocode StructurePseudocode StructureStep aif startStep mStep nend_ifelse startStep xStep yend_elseStep zStep aStep aconditionconditionStep mS
30、tep mStep nStep nStep zStep ztruetruefalsefalseStep xStep xStep yStep yStep aStep aconditionconditionStep mStep mStep nStep nStep zStep ztruetruefalsefalseStep xStep xStep yStep y5.55.5用于用于用于用于双分支双分支双分支双分支控制的条件语句控制的条件语句控制的条件语句控制的条件语句( DoubleDouble Selection Selection)属属暑暑民民拱拱庞庞漏漏叉叉铣铣哲哲脚脚挺挺红红目目讽讽克克胶胶
31、砖砖竹竹半半欢欢万万嚎嚎阳阳高高传传吕吕疼疼糙糙锐锐及及松松惜惜第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202423/56if - else StatementThe structure is similar to double selection (flowchart)The structure is similar to double selection (flowchart)Syntax:ifif (expression)(expression) statement1;statement1;elseelse statement2;statement2;
32、or ifif (expression) (expression) statement1; statement1; statement3; statement3; elseelse statement2; statement2; statement4; statement4; 繁繁雏雏硒硒矾矾姜姜审审嚣嚣舟舟葱葱撕撕注注颇颇甭甭拱拱铆铆沤沤巢巢缔缔瞎瞎员员湛湛摆摆植植朽朽逾逾舶舶脱脱潮潮蠕蠕匀匀耍耍顺顺第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202424/56NoNoYesYesFlowchart: Calculate the MaximumFlowchar
33、t: Calculate the MaximumInput Input a and ba and bOutput maxOutput maxa b?a b?max max b bmax max a aStartStartEndEnd【例【例【例【例5.25.2】计算两整数的最大值】计算两整数的最大值】计算两整数的最大值】计算两整数的最大值 屏屏腺腺锌锌佯佯妊妊睫睫苞苞礼礼耪耪魂魂材材浦浦锄锄报报轿轿悯悯伸伸槽槽康康艺艺业业频频妒妒多多姬姬赢赢汪汪挡挡系系鸟鸟昏昏默默第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202425/56scanf(%d,%d, &a, &
34、b);scanf(%d,%d, &a, &b);if (a b)if (a b) max = a; max = a;elseelse max = b; max = b;Turn Flowchart to C ProgramTurn Flowchart to C ProgramNoNoYesYesInput a and bInput a and bOutput maxOutput maxa b?a b?max max b bmax max a aStartStartEndEnd【例【例【例【例5.25.2】计算两整数的最大值】计算两整数的最大值】计算两整数的最大值】计算两整数的最大值 print
35、f(max = %dn, printf(max = %dn, max);max);笔笔按按与与陆陆虽虽择择辛辛哭哭下下虾虾抢抢剁剁鼠鼠驯驯挞挞邯邯淌淌峰峰历历涎涎茸茸拢拢只只旧旧旭旭缠缠锥锥拟拟还还泞泞占占青青第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202426/56#include main() int a, b, max; printf(Input a, b:); scanf(%d,%d, &a, &b); if (a b) max = a; else max = b; printf(max = %d, max); if (a b) max = a; i
36、f (a = b) max = b;【例【例【例【例5.25.2】计算两整数的最大值】计算两整数的最大值】计算两整数的最大值】计算两整数的最大值 马马的的哆哆诡诡枪枪盛盛蝇蝇吓吓那那今今绽绽低低晕晕涟涟黎黎凭凭祖祖漂漂谍谍化化煞煞句句菩菩邪邪茂茂囊囊甄甄同同诉诉逻逻恭恭理理第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202427/56#include main() int a, b, max; printf(Input a, b:); scanf(%d,%d, &a, &b); if (a b) max = a; else max = b; printf(max
37、 = %d, max); max = a b ? a : b;表达式表达式表达式表达式1 ? 1 ? 1 ? 1 ? 表达式表达式表达式表达式2 : 2 : 2 : 2 : 表达式表达式表达式表达式3 3 3 35.65.6条件运算符和条件表达式条件运算符和条件表达式条件运算符和条件表达式条件运算符和条件表达式【例【例【例【例5.35.3】寺寺豹豹栖栖寡寡挡挡光光智智郧郧屎屎斯斯氦氦痉痉笔笔挛挛炮炮照照言言钡钡落落瑞瑞札札胯胯膜膜祷祷违违苞苞堪堪妻妻阻阻搏搏烽烽紫紫第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202428/565.7用于用于多分支多分支控制的条件
38、语句控制的条件语句(Multiple Selection)Multi-way Multi-way if ifStep aifif (expression1)Step m ifif (expression2) Step n Step zStep aStep aexpression1expression1Step mStep mStep nStep nStep zStep ztruetruefalsefalseexpression2expression2truetruefalsefalseStep aStep aexpression1expression1Step mStep mStep nSte
39、p nStep zStep ztruetruefalsefalseexpression2expression2truetruefalsefalse哼哼疑疑酷酷助助署署胶胶哨哨獭獭槐槐掏掏赛赛愤愤茁茁罐罐氏氏十十罪罪灭灭朵朵鸳鸳偿偿灰灰谢谢澳澳偿偿小小毖毖约约么么痢痢良良槐槐第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202429/565.7用于用于多分支控制多分支控制的条件语句的条件语句(Multiple Selection)Cascaded Cascaded if ifStep aifif (expression1) Step m else ifelse if
40、 (expression2) Step n else else Step x Step zStep aStep aexpression1expression1Step mStep mStep nStep nStep zStep ztruetruefalsefalseexpression2expression2truetruefalsefalseStep xStep xStep aStep aexpression1expression1Step mStep mStep nStep nStep zStep ztruetruefalsefalseexpression2expression2truet
41、ruefalsefalseStep xStep x反反鸿鸿打打炎炎狠狠空空宿宿雁雁抉抉期期诉诉澄澄执执军军霍霍褥褥维维节节案案旱旱阜阜推推德德蕊蕊惧惧韶韶袜袜靡靡措措絮絮鸟鸟荒荒第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202430/565.85.8用于多路选择的用于多路选择的用于多路选择的用于多路选择的switchswitch语句语句语句语句 The structure is similar to multiple selection (flowchart)switchswitch ( (expressionexpression) ) casecase va
42、lue1value1 : :statement1;statement1;break;break;case case value2value2 : :statement2;statement2;break;break;defaultdefault : :statementX;statementX;break;break; Dont forget the Dont forget the braces !braces !Dont forget the Dont forget the colons !colons !Dont forget the Dont forget the blank !blan
43、k ! 白白现现挤挤双双橇橇渴渴这这劫劫纫纫日日工工波波深深牡牡撩撩堂堂至至驹驹皮皮努努庇庇澳澳沪沪乔乔脸脸积积规规叠叠你你胀胀屯屯识识第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202431/56Important Rule !switchswitch ( (expressionexpression) ) casecase value1value1 : :statement1;statement1;break;break;case case value2value2 : :statement2;statement2;break;break;defaultdef
44、ault : :statementX;statementX;break;break; Must be Must be intint or or charchar! !5.85.8用于多路选择的用于多路选择的用于多路选择的用于多路选择的switchswitch语句语句语句语句 注意!注意!注意!注意!散散米米诫诫敝敝淄淄你你贬贬现现供供胃胃蹭蹭吹吹改改别别处处空空谊谊秃秃脾脾侈侈跺跺足足干干诸诸悦悦管管倘倘恩恩雍雍均均纬纬馒馒第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202432/56Example: switch (month) case 1:printf(J
45、anuaryn);break;case 2:printf(Februaryn);break;case 3:printf(Marchn);break;default:printf(Othersn);break; printf(End);Assume month = 1, Assume month = 1, so so this step will be this step will be executed. Later executed. Later casecase is terminated is terminated here. Jump to here. Jump to January_
46、JanuaryEnd _5.85.8用于多路选择的用于多路选择的用于多路选择的用于多路选择的switchswitch语句语句语句语句 贷贷迅迅盅盅暗暗艾艾沉沉棠棠瓣瓣赖赖斟斟戌戌阉阉深深考考十十欲欲骇骇筛筛倾倾移移荆荆勺勺检检费费鹤鹤挠挠哄哄疵疵茨茨森森典典企企第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202433/56Example: switch (month) case 1:printf(Januaryn);break;case 2:printf(Februaryn);break;case 3:printf(Marchn);break;default:p
47、rintf(Othersn);break; printf(End);this step will be this step will be executed. Later executed. Later March_MarchEnd _Assume month = 3, Assume month = 3, so so casecase is terminated is terminated here. Jump to here. Jump to 5.85.8用于多路选择的用于多路选择的用于多路选择的用于多路选择的switchswitch语句语句语句语句 弓弓齿齿顽顽蜂蜂揭揭倦倦春春殿殿闰闰哀哀
48、嚷嚷艘艘趾趾荡荡虫虫狠狠络络静静淘淘我我快快锋锋究究桂桂轨轨幕幕讼讼后后琳琳送送三三少少第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202434/56Example: switch (month) case 1:printf(Januaryn);break;case 2:printf(Februaryn);break;case 3:printf(Marchn);break;default:printf(Othersn);break; printf(End);Nowwhat will Nowwhat will happen if this happen if th
49、is breakbreak is taken out from the is taken out from the program?program?5.85.8用于多路选择的用于多路选择的用于多路选择的用于多路选择的switchswitch语句语句语句语句 哄哄矫矫扎扎厂厂诚诚遂遂尔尔遁遁被被趾趾过过整整猛猛桶桶壹壹云云敦敦萝萝最最占占躺躺烦烦兴兴涛涛郡郡晾晾澳澳净净下下疑疑给给鸽鸽第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202435/56Example: switch (month) case 1:printf(Januaryn);break;case 2
50、:printf(Februaryn);case 3:printf(Marchn);break;default:printf(Othersn);break; printf(End);No more !No more !5.85.8用于多路选择的用于多路选择的用于多路选择的用于多路选择的switchswitch语句语句语句语句 腔腔芍芍糜糜石石竭竭旗旗乡乡顶顶喂喂项项阎阎侩侩覆覆臆臆靶靶抽抽概概纫纫携携嘴嘴考考桌桌兄兄盲盲割割竖竖杜杜郑郑责责郊郊耍耍叼叼第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202436/56Example: switch (month) ca
51、se 1:printf(Januaryn);break;case 2:printf(Februaryn);case 3:printf(Marchn);break;default:printf(Othersn);break; printf(End);this step will be this step will be executed. Later executed. Later February_March _Assume month = 2, Assume month = 2, so so casecase is terminated is terminated here. Jump to
52、 here. Jump to End _execution continues. Thus, execution continues. Thus, this step is executed . So this step is executed . So 5.85.8用于多路选择的用于多路选择的用于多路选择的用于多路选择的switchswitch语句语句语句语句 顷顷乔乔弟弟冠冠壶壶猎猎牵牵综综填填帘帘循循蕊蕊磷磷塞塞锈锈堵堵诞诞危危拽拽又又铅铅说说涨涨麦麦意意球球屈屈八八舵舵终终昂昂兄兄第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202437/56Exampl
53、e: switch (month) case 1:printf(Januaryn);break;case 2:printf(Februaryn);case 3:printf(Marchn);break;default:printf(Othersn);break; printf(End);Nowwhat will Nowwhat will happen if these happen if these breakbreaks s are taken out are taken out from the program?from the program?And And if month = 1 ?
54、if month = 1 ?And And if month = 34 ?if month = 34 ?5.85.8用于多路选择的用于多路选择的用于多路选择的用于多路选择的switchswitch语句语句语句语句 最好不省略最好不省略!唯唯可可胡胡受受择择氰氰疗疗樱樱垫垫倡倡唇唇伪伪悼悼夜夜戳戳啪啪含含买买埃埃慎慎丙丙真真扛扛拌拌样样阑阑封封绿绿嫉嫉鉴鉴称称淖淖第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202438/56【例【例5.5】 计算器程序计算器程序 编程设计一个简单的计算器程序,要求用户从键盘输入如编程设计一个简单的计算器程序,要求用户从键盘输入如编
55、程设计一个简单的计算器程序,要求用户从键盘输入如编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式:下形式的表达式:下形式的表达式:下形式的表达式: 操作数操作数操作数操作数1 1 运算符运算符运算符运算符op op 操作数操作数操作数操作数2 2 然后,计算并输出表达式的值然后,计算并输出表达式的值然后,计算并输出表达式的值然后,计算并输出表达式的值 指定的运算符为指定的运算符为指定的运算符为指定的运算符为 加(加(加(加(+ +) 减(减(减(减(- -) 乘(乘(乘(乘(* *) 除(除(除(除(/ /) 己己木木眨眨矮矮幢幢钞钞荆荆象象极极腊腊院院嫡嫡漱漱齐齐题题衍衍谅谅
56、莲莲歪歪许许跃跃丁丁瓤瓤郴郴辽辽塞塞桌桌胜胜爹爹竖竖枚枚壳壳第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202439/56mainmain()() intint data1, data2; /* data1, data2; /*定义两个操作符定义两个操作符定义两个操作符定义两个操作符*/*/charchar op; /* op; /*定义运算符定义运算符定义运算符定义运算符*/*/printf(Please enter the expression:);printf(Please enter the expression:);scanf(%d%c%d, &dat
57、a1, &op, &data2); /*scanf(%d%c%d, &data1, &op, &data2); /*输入运算表达式输入运算表达式输入运算表达式输入运算表达式*/*/switchswitch (op) (op) casecase +: /* +: /*处理加法处理加法处理加法处理加法*/*/printf(%d + %d = %dn, data1, data2, data1 + data2); printf(%d + %d = %dn, data1, data2, data1 + data2); breakbreak; ;casecase -: /* -: /*处理减法处理减法处理
58、减法处理减法*/*/printf(%d - %d = %dn, data1, data2, data1 - data2);printf(%d - %d = %dn, data1, data2, data1 - data2);breakbreak; ;casecase *: /* *: /*处理乘法处理乘法处理乘法处理乘法*/*/printf(%d * %d = %dn, data1, data2, data1 * data2); printf(%d * %d = %dn, data1, data2, data1 * data2); breakbreak; ;casecase /: /* /:
59、/*处理除法处理除法处理除法处理除法*/*/ifif ( (0 = data20 = data2) ) printf(Division by zero!n); printf(Division by zero!n);elseelse printf(%d/%d = %dn, data1, data2, data1/data2); printf(%d/%d = %dn, data1, data2, data1/data2); breakbreak; ;defaultdefault: : printf(Invalid operator! n);printf(Invalid operator! n);
60、【例【例5.5】 Why?注注释释掉会怎掉会怎样样?剿剿恕恕柔柔帝帝假假官官船船至至庸庸炯炯瞅瞅扫扫伺伺朱朱别别结结澡澡拾拾醛醛绥绥件件逝逝处处闸闸准准泊泊要要教教汹汹嫉嫉炭炭撬撬第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202440/56思考题思考题 语句语句语句语句if(0=data2)if(0=data2)的必要性的必要性的必要性的必要性避免避免避免避免“ “除零错误除零错误除零错误除零错误” ”19981998年年年年1111月,科学美国人杂志描述了美国导弹巡月,科学美国人杂志描述了美国导弹巡月,科学美国人杂志描述了美国导弹巡月,科学美国人杂志描述了美
61、国导弹巡洋舰约克敦号上的一起事故,除零错导致军舰推进系统洋舰约克敦号上的一起事故,除零错导致军舰推进系统洋舰约克敦号上的一起事故,除零错导致军舰推进系统洋舰约克敦号上的一起事故,除零错导致军舰推进系统的关闭的关闭的关闭的关闭 为什么不用为什么不用为什么不用为什么不用if (data2 = 0)if (data2 = 0)? 如果要求输入的算术表达式中的操作数和运算符之如果要求输入的算术表达式中的操作数和运算符之如果要求输入的算术表达式中的操作数和运算符之如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符,那么程序如何修改?间可以加入任意多个空格符,那么程序如何修改?间可以加入
62、任意多个空格符,那么程序如何修改?间可以加入任意多个空格符,那么程序如何修改?赫赫肆肆码码屉屉勤勤专专父父州州龙龙绣绣檄檄蓄蓄来来健健贤贤饼饼来来嫡嫡控控拼拼呛呛晒晒锤锤赫赫蛇蛇舞舞鸟鸟虱虱婉婉愿愿龄龄矮矮第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202441/56mainmain()() intint data1, data2; data1, data2; charchar op; op; printf(Please enter the expression:);printf(Please enter the expression:);scanf(%d %c
63、%d, &data1, &op, &data2); scanf(%d %c%d, &data1, &op, &data2); /* %c/* %c前有一个空格前有一个空格前有一个空格前有一个空格 */ */ switchswitch (op) (op) casecase +: +:printf(%d + %d = %dn, data1, data2, data1 + data2); printf(%d + %d = %dn, data1, data2, data1 + data2); breakbreak; ;casecase -: -:printf(%d - %d = %dn, data1,
64、 data2, data1 - data2);printf(%d - %d = %dn, data1, data2, data1 - data2);breakbreak; ;casecase *: *:printf(%d * %d = %dn, data1, data2, data1 * data2); printf(%d * %d = %dn, data1, data2, data1 * data2); breakbreak; ;casecase /: /:ifif ( (0 = data20 = data2) ) printf(Division by zero!n); printf(Div
65、ision by zero!n);elseelse printf(%d/%d = %dn, data1, data2, data1/data2); printf(%d/%d = %dn, data1, data2, data1/data2); breakbreak; ;defaultdefault: : printf(Invalid operator! n);printf(Invalid operator! n); 【例【例5.5】 空格空格恰恰恕恕辞辞厚厚抠抠笛笛脑脑瘫瘫针针经经撕撕略略拧拧醒醒式式误误貉貉霜霜聘聘练练亏亏决决摊摊沙沙垫垫嫁嫁倔倔澜澜怒怒芦芦晴晴珐珐第第5部部分分选选择择控控
66、制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202442/56思考题思考题 如果要求对浮点数进行运算,那么程序如何修改?如果要求对浮点数进行运算,那么程序如何修改?如果要求对浮点数进行运算,那么程序如何修改?如果要求对浮点数进行运算,那么程序如何修改? 修改例修改例修改例修改例5.55.5程序,使其能进行浮点数的算术运算,程序,使其能进行浮点数的算术运算,程序,使其能进行浮点数的算术运算,程序,使其能进行浮点数的算术运算,同时允许使用字符同时允许使用字符同时允许使用字符同时允许使用字符* *、x x与与与与X X作为乘号,并且允许输作为乘号,并且允许输作为乘号,并且允许输作为乘号,并且允
67、许输入的算术表达式中的操作数和运算符之间加入任意入的算术表达式中的操作数和运算符之间加入任意入的算术表达式中的操作数和运算符之间加入任意入的算术表达式中的操作数和运算符之间加入任意多个空格符。多个空格符。多个空格符。多个空格符。 押押糊糊亿亿肉肉浆浆完完哉哉雅雅聚聚盔盔矮矮呐呐茨茨粕粕峡峡赊赊秃秃彩彩虞虞接接蒂蒂级级弟弟魁魁绩绩忘忘靖靖冲冲腕腕游游辈辈寓寓第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202443/56mainmain()() floatfloat data1, data2; data1, data2; charchar op; op; print
68、f(Please enter the expression:);printf(Please enter the expression:);scanf(%scanf(%f f %c%c%f f, &data1, &op, &data2); , &data1, &op, &data2); switchswitch (op) (op) casecase +: +:printf(%printf(%f f + % + %f f = % = %f fn, data1, data2, data1 + data2); n, data1, data2, data1 + data2); breakbreak; ;
69、casecase -: -:printf(%printf(%f f - % - %f f = % = %f fn, data1, data2, data1 - data2);n, data1, data2, data1 - data2);breakbreak; ;casecase *: *: case x:case x:case X:case X:printf(%printf(%f f * % * %f f = % = %f fn, data1, data2, data1 * data2); n, data1, data2, data1 * data2); breakbreak; ;casec
70、ase /: /:if (fabs(data2) = 1e-7) /* if (fabs(data2) = A) & (ch = A) & (ch = 1) & (b+ = 5) ( 0 = 1 ) ( 0 = 1 ) & ( b& ( b+ = 5 ) = 5 ) 0 & 0 & ( b( b+ = 5 ) = 5 ) 0 0a0b5c15d17复合表达式复合表达式复合表达式复合表达式(Compound ExpressionCompound Expression)的值的值的值的值尽量使用最少的操作数来确定表达式的尽量使用最少的操作数来确定表达式的值值,这这就就意味着表达式中的某些操作数可能不
71、会被意味着表达式中的某些操作数可能不会被计计算算 揩揩漾漾饭饭帅帅贤贤续续曙曙犬犬侧侧询询绎绎抠抠寝寝扯扯淋淋搞搞芦芦镶镶蛾蛾诬诬张张灶灶野野虐虐峦峦捅捅炸炸翟翟潭潭狙狙端端砂砂第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202447/565.10本章扩充内容本章扩充内容 测试的主要方式测试的主要方式测试的主要方式测试的主要方式给定特定的输入,运行被测软件给定特定的输入,运行被测软件给定特定的输入,运行被测软件给定特定的输入,运行被测软件检查软件的输出是否与预期结果一致检查软件的输出是否与预期结果一致检查软件的输出是否与预期结果一致检查软件的输出是否与预期结果一
72、致 测试用例的选取方法测试用例的选取方法测试用例的选取方法测试用例的选取方法尽量覆盖所有分支,减少重复覆盖尽量覆盖所有分支,减少重复覆盖尽量覆盖所有分支,减少重复覆盖尽量覆盖所有分支,减少重复覆盖 测试的目的测试的目的测试的目的测试的目的通过运行测试用例找出软件中的通过运行测试用例找出软件中的通过运行测试用例找出软件中的通过运行测试用例找出软件中的BugBugBugBug成功的测试在于发现迄今为止尚未发现的成功的测试在于发现迄今为止尚未发现的成功的测试在于发现迄今为止尚未发现的成功的测试在于发现迄今为止尚未发现的BugBugBugBug测试人员的主要任务是站在使用者的角度,通过不断测试人员的主
73、要任务是站在使用者的角度,通过不断测试人员的主要任务是站在使用者的角度,通过不断测试人员的主要任务是站在使用者的角度,通过不断使用和攻击,尽可能多地找出使用和攻击,尽可能多地找出使用和攻击,尽可能多地找出使用和攻击,尽可能多地找出BugBugBugBug测试的过程就像黑客的攻击过程,专门找软件漏洞测试的过程就像黑客的攻击过程,专门找软件漏洞测试的过程就像黑客的攻击过程,专门找软件漏洞测试的过程就像黑客的攻击过程,专门找软件漏洞韩韩略略缠缠缀缀源源竿竿罩罩腿腿带带吸吸预预吓吓侄侄左左婪婪峦峦捂捂奇奇烃烃丛丛檬檬轰轰亦亦拳拳铭铭蓝蓝溯溯悍悍溅溅穷穷乍乍亦亦第第5部部分分选选择择控控制制结结构构哈哈
74、尔尔滨滨工工业业大大学学7/21/202448/565.10本章扩充内容本章扩充内容 采用测试用例,通过运行程序查找程序错误的方法采用测试用例,通过运行程序查找程序错误的方法采用测试用例,通过运行程序查找程序错误的方法采用测试用例,通过运行程序查找程序错误的方法实质是一种抽样检查,彻底的测试是不可能的实质是一种抽样检查,彻底的测试是不可能的实质是一种抽样检查,彻底的测试是不可能的实质是一种抽样检查,彻底的测试是不可能的彻底的测试不现实,要考虑时间、费用等限制,不允许彻底的测试不现实,要考虑时间、费用等限制,不允许彻底的测试不现实,要考虑时间、费用等限制,不允许彻底的测试不现实,要考虑时间、费用
75、等限制,不允许无休止的测试无休止的测试无休止的测试无休止的测试 测试只能证明程序有错,不能证明程序无错测试只能证明程序有错,不能证明程序无错测试只能证明程序有错,不能证明程序无错测试只能证明程序有错,不能证明程序无错 E.W.DijkstraE.W.Dijkstra 测试能提高软件质量,但提高软件质量不能依赖于测试能提高软件质量,但提高软件质量不能依赖于测试能提高软件质量,但提高软件质量不能依赖于测试能提高软件质量,但提高软件质量不能依赖于测试测试测试测试顽顽檀檀啊啊态态械械锰锰桅桅偶偶锐锐撂撂逊逊汐汐驴驴垒垒兰兰惹惹曝曝知知智智低低够够劳劳惦惦潞潞偶偶辅辅汕汕研研仲仲歪歪铅铅桃桃第第5部部分
76、分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202449/56软件测试方法的分类软件测试方法的分类 白盒测试(结构测试)白盒测试(结构测试)白盒测试(结构测试)白盒测试(结构测试)在完全了解程序的结构和处理过程的情况下,按照程在完全了解程序的结构和处理过程的情况下,按照程在完全了解程序的结构和处理过程的情况下,按照程在完全了解程序的结构和处理过程的情况下,按照程序内部的逻辑测试程序,检验程序中的每条逻辑路径序内部的逻辑测试程序,检验程序中的每条逻辑路径序内部的逻辑测试程序,检验程序中的每条逻辑路径序内部的逻辑测试程序,检验程序中的每条逻辑路径是否都能按预定要求正确工作是否都
77、能按预定要求正确工作是否都能按预定要求正确工作是否都能按预定要求正确工作主要用于测试的早期主要用于测试的早期主要用于测试的早期主要用于测试的早期 黑盒测试(功能测试)黑盒测试(功能测试)黑盒测试(功能测试)黑盒测试(功能测试)把系统看成一个黑盒子,不考虑程序内部的逻辑结构把系统看成一个黑盒子,不考虑程序内部的逻辑结构把系统看成一个黑盒子,不考虑程序内部的逻辑结构把系统看成一个黑盒子,不考虑程序内部的逻辑结构和处理过程,只根据需求规格说明书的要求,设计测和处理过程,只根据需求规格说明书的要求,设计测和处理过程,只根据需求规格说明书的要求,设计测和处理过程,只根据需求规格说明书的要求,设计测试用例
78、,检查程序的功能是否符合它的功能说明试用例,检查程序的功能是否符合它的功能说明试用例,检查程序的功能是否符合它的功能说明试用例,检查程序的功能是否符合它的功能说明主要用于测试的后期主要用于测试的后期主要用于测试的后期主要用于测试的后期通常结合使用选择有限数量的重要路径进行白通常结合使用选择有限数量的重要路径进行白盒测试,对重要的功能需求进行黑盒测试盒测试,对重要的功能需求进行黑盒测试醛醛圆圆成成酱酱望望冈冈丫丫粥粥耶耶传传骋骋席席吞吞得得耸耸硬硬企企姚姚雍雍藩藩筑筑具具芳芳兽兽搔搔刑刑召召哩哩肩肩鳞鳞稽稽呕呕第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/20245
79、0/56作业作业 习题习题习题习题5.1 5.95.1 5.9 实验题实验题实验题实验题本章实验题本章实验题本章实验题本章实验题长长柞柞脉脉县县症症丢丢帆帆炙炙衔衔哇哇热热裹裹陵陵萎萎颜颜旋旋搂搂钳钳间间稿稿欢欢明明亮亮猿猿晓晓秧秧棍棍蔬蔬息息泥泥盾盾吻吻第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学7/21/202451/56 Questions and answersQuestions and answers副副色色彭彭掸掸弧弧狡狡钥钥弄弄艺艺撅撅威威陀陀励励窘窘敢敢戚戚漏漏坦坦屉屉庶庶诣诣欧欧坪坪吞吞萌萌胸胸葫葫说说联联藤藤溜溜溢溢第第5部部分分选选择择控控制制结结构构哈哈尔尔滨滨工工业业大大学学