您好,欢迎访问三七文档
第2章程序控制结构2.1选择控制2.2循环控制2.3判断表达式的使用2.4转向语句小结语句是程序的基本语法成分。程序设计语言的语句按功能可以分成三类:声明语句指示编译器分配内存,或者提供程序连接信息操作语句描述对数据的处理控制语句用于控制程序的执行流程。所有程序都只能包含三种控制结构:顺序结构、选择结构和循环结构第2章程序控制结构程序流程图的介绍在描述一个程序的基本结构思想时有很多种方法,其中程序流程图是最常用也是最基本的方法。传统程序流程图传统流程图表示法的特点是用一些图框表示各种类型的操作,用线表示这些操作的执行顺序。美国国家标准化协会ANSI规定了一些常用的流程图符号,现已为世界各国普遍采用。我国也有自己的国家标准GB1526-89与该标准基本相同,参照ANSI标准做具体介绍。起止框输入输出框判断框处理框或流程线连接点N-S流程图灵活的流程线在程序设计中有它自己的优点,但也隐藏着许多导致错误的祸根。因为它允许用流程线使流程任意转移,这对程序设计是一个隐患,它使程序流程看起来很乱,使程序难以理解和维护。针对这一弊病,1973年美国学者I.Nassi和B.Shneiderman提出了一种无流程线的流程图,称为N-S图。它的基本表示方法是用一个矩形框,把整个程序算法像堆积木一样组成。对给定的条件进行判断,并根据判断的结果选择不同的操作2.1选择控制条件运算表达式根据判断条件,决定表达式的值不改变程序语句执行流程比较条件运算1.if语句的形式和执行流程if(表达式)语句;2.1.1if语句语句形式(1)执行流程false(0)true(非0)表达式语句2.1.1if语句false(0)true(非0)表达式语句1.if语句的形式和执行流程if(表达式)语句;2.1.1if语句语句形式(1)执行流程表达式语句true(非0)2.1.1if语句false(0)true(非0)表达式语句1.if语句的形式和执行流程if(表达式)语句;2.1.1if语句语句形式(1)执行流程表达式false(0)2.1.1if语句2.1.1if语句35abmax例::max=a;if(ba)max=b;coutmax=maxendl;:2.1.1if语句2.1.1if语句35abmax3例::max=a;if(ba)max=b;coutmax=maxendl;:2.1.1if语句2.1.1if语句35abmax3例::max=a;if(ba)max=b;coutmax=maxendl;:2.1.1if语句2.1.1if语句35abmax3例::max=a;if(ba)max=b;coutmax=maxendl;:2.1.1if语句2.1.1if语句35abmax5例::max=a;if(ba)max=b;coutmax=maxendl;:2.1.1if语句2.1.1if语句35abmax5max=5输出例::max=a;if(ba)max=b;coutmax=maxendl;:2.1.1if语句2.1.1if语句73abmax例::max=a;if(ba)max=b;coutmax=maxendl;:2.1.1if语句2.1.1if语句73abmax7例::max=a;if(ba)max=b;coutmax=maxendl;:2.1.1if语句2.1.1if语句73abmax7例::max=a;if(ba)max=b;coutmax=maxendl;:2.1.1if语句2.1.1if语句73abmax7max=7输出例::max=a;if(ba)max=b;coutmax=maxendl;:2.1.1if语句2.1.1if语句1.if语句的形式和执行流程语句形式(2)if(表达式)语句1;else语句2;执行流程false(0)true(非0)表达式语句1语句22.1.1if语句2.1.1if语句1.if语句的形式和执行流程语句形式(2)if(表达式)语句1;else语句2;执行流程false(0)true(非0)表达式语句1语句2true(非0)表达式语句12.1.1if语句2.1.1if语句1.if语句的形式和执行流程语句形式(2)if(表达式)语句1;else语句2;执行流程false(0)true(非0)表达式语句1语句2false(0)表达式语句22.1.1if语句2.1.1if语句例::if(ba)max=b;elsemax=a;coutmax=maxendl;:35abmax2.1.1if语句2.1.1if语句35abmax例::if(ba)max=b;elsemax=a;coutmax=maxendl;:2.1.1if语句2.1.1if语句例::if(ba)max=b;elsemax=a;coutmax=maxendl;:35abmax52.1.1if语句2.1.1if语句例::if(ba)max=b;elsemax=a;coutmax=maxendl;:35abmax5max=5输出2.1.1if语句2.1.1if语句例::if(ba)max=b;elsemax=a;coutmax=maxendl;:73abmax2.1.1if语句2.1.1if语句例::if(ba)max=b;elsemax=a;coutmax=maxendl;:73abmax72.1.1if语句2.1.1if语句例::if(ba)max=b;elsemax=a;coutmax=maxendl;:73abmax7max=7输出2.1.1if语句2.1.1if语句例::if(ba)max=b;elsemax=a;coutmax=maxendl;:73abmax7max=7输出试一试用条件表达式修改该程序2.1.1if语句2.1.1if语句2.if语句的嵌套if语句中的执行语句如果又是另一个if语句,称为嵌套if语句if与else的配对关系:C++规定,else总是与它接近的if配对使用复合语句,可以改变条件语句的执行流程2.1.1if语句2.1.1if语句例2-1编写程序计算货物运费。设货物运费每吨单价p(元)与运输距离s(公里)之间有如下关系:400204003005.22300200252001005.2710030sssssp=输入要托运的货物重量为w吨,托运距离s公里,计算总运费t:t=p*w*s2.1.1if语句2.1.1if语句控制流图truefalsetruetruetruefalsefalsefalseS100?S200?S300?S400?P=30P=20P=22.5P=25P=27.5t=p*w*s2.1.1if语句2.1.1if语句truefalsetruetruetruefalsefalsefalseS100?S200?S300?S400?P=30P=20P=22.5P=25P=27.5t=p*w*s//例2-1计算货物运费#includeiostream#includeiomanipusingnamespacestd;intmain(){doublet,p,w,s;coutPleaseinputweight(ton):;cinw;coutPleaseinputdistsnce(kilometre):;cins;if(s100)p=30;elseif(s200)p=27.5;elseif(s300)p=25;elseif(s400)p=22.5;elsep=20;t=p*w*s;coutThecostis:setprecision(2)t'$'endl;}想一想:几个else分支语句的次序可以改变吗?2.1.1if语句//例2-1计算货物运费#includeiostream#includeiomanipusingnamespacestd;intmain(){doublet,p,w,s;coutPleaseinputweight(ton):;cinw;coutPleaseinputdistsnce(kilometre):;cins;if(s100)p=30;elseif(s200)p=27.5;elseif(s300)p=25;elseif(s400)p=22.5;elsep=20;t=p*w*s;coutThecostis:setprecision(2)t'$'endl;}truefalsetruetruetruefalsefalsefalseS100?S200?S300?S400?P=30P=20P=22.5P=25P=27.5t=p*w*s2.1.1if语句例如:cins;if(s300)p=25;elseif(s100)p=30;elseif(s400)p=22.5;elseif(s200)p=27.5;elsep=20;t=p*w*s;若输入s:150输出t值等于多少?为什么?2.1.1if语句2.1.1if语句例2-2输入三个整数,按从小到大顺序输出。解法一数据排序。先找出最小值,放在a中,然后找次小值,放在b中:1.对a、b进行比较,把小值放于a;ifabab//ab2.对a、c进行比较,把小值放于a;ifacac//ac,ab3.对b、c进行比较,把小值放于b;ifbcbc//ab&&bc4.输出a,b,c的值。2.1.1if语句2.1.1if语句例2-2输入三个整数,按从小到大顺序输出。a752bcab:aba572bca275bc27ac:ac2bc:bca257bcabab,acab&&bc2.1.1if语句2.1.1if语句例2-2输入三个整数,按从小到大顺序输出。#includeiostreamusingnamespacestd;intmain(){inta,b,c,t;coutPleaseinputthreeintegernumbers:;cinabc;if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(bc){t=b;b=c;c=t;}coutabcendl;}注意语句块结构2.1.1if语句2.1.1if语句例2-2输入三个整数,按从小到大顺序输出。#includeiostreamusingnamespacestd;intmain(){inta,b,c,t;coutPleaseinputthreeintegernumbers:;cinabc;if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(bc){t=b;b=c;c=t;}coutabcendl;}注意语句块结构2.1.1if语句2.1.1if语句例2-2输入三个整数,按从小到大顺序输出。解法二改变输出顺序:3个数的6种可能排列方式:•abcab&&bc•acbac&&cb•bacba&&ac•bcabc&&ca•cabca&&ab•cbacb&&ba2.1.1if语句2.1.1if语句例2-2输入三个整数,按从小到大顺序输出。解法二改变输出顺序:3个数的6种可能排列方式:•abcab&&bc•acbac&&cb•bacba&&ac•bcabc&&ca•cabca&&ab•cbacb&&ba优化算法首先分析a,b的顺序2.1.1if语句2.1.1if语句例2-2输入三个整数,按从小到大顺序输出。解法二改变输出
本文标题:程序控制结构.
链接地址:https://www.777doc.com/doc-2150906 .html