基本控制结构程序设计选择结构.ppt
《基本控制结构程序设计选择结构.ppt》由会员分享,可在线阅读,更多相关《基本控制结构程序设计选择结构.ppt(14页珍藏版)》请在冰点文库上搜索。
第2章基本控制结构程序设计,C+程序设计(第2版),版本号:
V2006.10-07.01,C+语言是结构化的程序设计语言。
采用结构化程序设计方法,可以使程序的逻辑结构清晰、可读性好、可靠性强,从而提高程序的开发效率。
结构化程序设计是由三种基本结构表示的,即顺序结构、选择结构和循环结构。
由这三种基本结构经过反复嵌套,可以实现各种算法。
函数是C+程序的基本模块,在这个基本模块中,至少应包含上述的一种基本结构,或者是三种基本结构的复合,由此就构成了C+程序和结构化特征。
C+语言的结构化程序设计方法,2.2.1if语句if条件语句有三种基本形式,简单if形式、嵌套if.else形式和阶梯else.if形式。
简单if形式:
if(表达式)语句块;功能:
如果表达式的值为TRUE(非0),则执行后边的语句块;否则不执行表达式后面的词句块,而是继续执行整个if语句后面的语句。
选择结构的功能是根据对条件的逻辑判断,决定程序中相关流程的执行路径。
C+语言为分支结构提供了两种语句:
if条件语句和switch开关语句。
2.2分支结构程序设计,注意:
if中的表达式可以是一个逻辑表达式、算术表达式、甚至是一个常量。
例:
2.1求输入整数的绝对值。
#includevoidmain(void)inta,b;couta;b=a;if(b0)b=-b;coutn|a|=bn;,嵌套if.else形式:
if(表达式)语句块1;else语句块2;,功能:
如果表达的值为非0(TRUE),则执行语句块1,否则执行语句块2。
最后执行整个if.else语句后面的语句。
#includevoidmain()inta,b;coutab;if(a!
=b)if(ab)coutBn;elsecoutABn;elsecoutA=Bn;,在此例中使用了if.else形式,并且if.else语句中嵌套了另一个if.else语句。
在ANSI标准中规定,编译程序至少要支持15层嵌套。
两个else中第一个与内层if相配,第二个与外层if相配。
在嵌套的if语句中,else总是与它最接近的if语句相配。
例2.2比较两个输入数的大小。
if(表达式1)语句块1;elseif(表达式2)语句块2;elseif(表达式3).语句块3;.else语句块n;,功能:
从表达式1开始,依次计算,如果某个表达式为非0(TRUE),则执行该表达式后边的语句块,然后转到整个if语句后面的语句。
如果所有表达式的值都为0(FLASE),则执行else后面的语句块n;该结构中,最后一个else可以没有,或者只有一个。
阶梯型的else.if,#includevoidmain(void)intx,y,z,max;coutxyz;max=x;if(zy)if(zx)max=z;elseif(yx)max=y;coutmax_num=maxendl;,if(zy)if(zx)max=z;elseif(yx)max=y;,例2.3从输入的三个数中求最大的数。
(含错误的程序),x,y,z,Max=x,Max=x,Max=z,Max=y,X,y,z,Max=x,Max=z,Max=y,Zy?
Zx?
Yx?
Zy?
Zx?
Yx?
F,T,F,T,T,T,T,F,F,F,Max=x,开关选择语句又称为多路分支语句,它根据一个量的多种不同可能,选择执行程序的某一个分支。
其一般形式如下:
switch(表达式1)case表达式2:
语句块1;break;case表达式3:
语句块2;break;。
case表达式n:
语句块n;break;default:
语句块n+1;break;,2.2.4switch语句,执行switch语句时,先计算括号内的值,然后,将其结果值与各个case语句中的常量值相比较,当与某个一致时,就执行该case后面的语句块,直到碰到break或者switch语句执行完为止。
若没有一个常量与表达式的值相等,则执行default语句。
default是可选的,如果defualt不存在,并且所有的常量与表达式不相等,就不进行任何处理。
功能:
(1)switch语句中,表达式的类型必须是整形或字符形;如果使用字符形,C+将自动将其转换成为整形,也就是实际使用的该字符所对应的ASCII值,对应的case也一样。
(2)switch语句与if语句的不同之外在于,if语句可以计算关系表达式或逻辑表达式,而switch只能对等式进行测试。
(3)在同一个switch语句中,任意两个case的表达式的值不允许相同。
(4)在switch语句中,break语句终止当前所在case的语句块,并退出switch语句,否则将自动进入下一个case语句块中。
注意:
#includevoidmain(void)inti,flag=1;couti;switch(i)case1:
;case2:
;case3:
flag=0;break;case4:
flag=-1;case5:
couterror=flagendl;break;default:
cout.put(char)i);,程序说明:
(1)每个case都可以有空语句。
在这个例子中前三个case都执行了同样的语句:
flag=0;break;
(2)如果break语句不存在,就将在下一个case中继续执行。
例中,如果i=4,那么flag=-1,由于没有break语句,继续执行,这样cout.put(char)i);也就被执行。
如果i=5,putchar;将被调用。
(3)一般情况下,switch可由if语句替代,本例可改写为if.else语句如下:
#includevoidmain(void)inti,flag=1;cini;if(i=1,