您好,欢迎访问三七文档
章分支结构滨江学院第七章分支结构程序设计7.1分支结构概述7.2if语句7.3多分支结构7.4单分支结构7.5语句标号和goto语句7.6综合程序举例滨江学院第七章分支结构程序设计1.分支结构的概念:根据给定条件是否成立而决定执行不同步骤的算法结构。2.基本模式:双分支结构和单分支结构。3.执行到分支结构时,在两条可能的路径中,根据条件是否成立而选择其中一条执行。7.1分支结构概述双分支结构单分支结构滨江学院第七章分支结构程序设计•在现实生活中,需要进行判断和选择的情况是很多的,例如:–上完体育课,如果是上午最后一节,下课后去食堂吃饭;否则,进教室上课。–如果考试不及格,要补考–如果遇到红灯,要停车等待–身高低于1.3的儿童乘地铁免票7.1分支结构概述滨江学院第七章分支结构程序设计7.2if语句•C语言的if语句有以下两种基本形式:(1)if(表达式)语句(2)if(表达式)语句1else语句2/*含else子句的if语句*//*不含else子句的if语句*/滨江学院第七章分支结构程序设计7.2.1if语句•if(表达式)语句滨江学院第七章分支结构程序设计•【例7-1】输入两个数,分别放入x和y中,要求输出其中的大数。7.2.1if语句#includestdio.hmain(){intx,y,max;printf(Enterx&y:);scanf(%d%d,&x,&y);printf(x=%d,y=%d\n,x,y);max=x;if(xy)max=y;printf(最大值为:%d\n,max);}滨江学院第七章分支结构程序设计【程序分析】以上程序求两个数的最大值,那么求三个数或更多数的最大值呢?也可以用此类方法即打擂法:先找出任一人站在台上,第2人上去与之比武,胜者留在台上第3人与台上的人比武,胜者留台上,败者下台以后每一个人都是与当时留在台上的人比武,直到所有人都上台比为止,最后留在台上的是冠军。此处max中的值为擂主。练习:输入三个不相等的数a,b,c,将最大数赋值给变量max并输出。7.2.1if语句滨江学院第七章分支结构程序设计•【例7-2】输入三个整数,分别放在变量a、b和c中,然后把输入的数据重新按由小到大的顺序放在变量a、b和c中,最后输出a、b和c中的值。•【问题分析】–先将a和b进行比较,若ab则将a与b进行值交换,使得a值为a和b中的较小值;–接着将a和c进行比较,若ac则将a与c进行值交换,此时使得a值为a、b和c中的最小值;–最后将b和c进行比较,若bc则将b与c进行值交换,此时使得b值为b和c中的较小值,且c值为最大值。7.2.1if语句滨江学院第七章分支结构程序设计7.2.1if语句#includestdio.hvoidmain(){inta,b,c,t;printf(inputa,b,c:);scanf(%d%d%d,&a,&b,&c);printf(a=%d,b=%d,c=%d\n,a,b,c);if(ab){t=a;a=b;b=t;}if(ac){t=a;a=c;c=t;}if(bc){t=b;b=c;c=t;}printf(%d,%d,%d\n,a,b,c);}【程序分析】以上程序无论给a、b和c输入什么数,最后总是把最小数放在a中,把最大数放在c中。当然,此题稍做变化,如不改变输入a、b、c的值,而通过改变输出的a、b、c的顺序来实现对输入数据的有序输出;请自行考虑,并编程实现。滨江学院第七章分支结构程序设计7.2.2if…else语句if(表达式)语句1else语句2【注意】else不是一条独立的语句,它只是if语句的一部分。在程序中else必须与if配对,共同组成一条if…else语句。滨江学院第七章分支结构程序设计•【例7-3】输入一个数,判别它是否能被3整除。若能被3整除,输出YES;不能被3整除,输出NO。7.2.2if…else语句#includestdio.hmain(){intn;printf(inputn:);scanf(%d,&n);if(n%3==0)/*判断n能否被3整除*/printf(n==%dYES\n,n);elseprintf(n==%dNO\n,n);}滨江学院第七章分支结构程序设计7.3多分支结构•双分支结构:上完体育课,如果是上午最后一节,下课后去食堂吃饭;否则,进教室上课。滨江学院第七章分支结构程序设计7.3.1嵌套的if语句•if子句和else子句中可以是任意合法的C语句,因此当然也可以是if语句,通常称此为嵌套的if语句。•内嵌的if语句既可以嵌套在if子句中,也可以嵌套在else子句中。具体形式有以下三种:一.在if子句中嵌套具有else子句的if语句if(表达式1)if(表达式2)语句1else语句2else语句3滨江学院第七章分支结构程序设计二.在if子句中嵌套不含else子句的if语句if(表达式1){if(表达式2)语句1}else语句2【注意】在if子句中的一对花括号不可缺少。因为C语言的语法规定:else子句总是与前面最近的不带else的if相结合,与书写格式无关。因此,以上语句如果写成:if(表达式1)if(表达式2)语句1else语句2if(表达式1)if(表达式2)语句1else语句2实质上等价于7.3.1嵌套的if语句滨江学院第七章分支结构程序设计三.在else子句中嵌套if语句7.3.1嵌套的if语句if(表达式1)语句1elseif(表达式2)语句2else语句3if(表达式1)语句1elseif(表达式2)语句2if(表达式1)语句1elseif(表达式2)语句2else语句3if(表达式1)语句1elseif(表达式2)语句2(1)内嵌的if语句带有else:(2)内嵌的if语句不带else:或写成:或写成:由以上两种语句形式可以看到,内嵌在else子句中的if语句无论是否有else子句,在语法上都不会引起误会,因此建议在设计嵌套的if语句时,尽量把内嵌的if语句嵌在else子句中。滨江学院第七章分支结构程序设计•在else子句中嵌套if语句可形成多层嵌套,这时形成了层次式的嵌套if语句if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3elseif(表达式4)语句4……else语句n7.3.1嵌套的if语句滨江学院第七章分支结构程序设计•【例7-4】编程实现:根据输入的学生成绩给出相应的等级,大于或等于90分以上的等级为A,60分以下的等级为E,其余每10分为一个等级。•【问题分析】分析题目,可以看出这个题目是根据输入的学生成绩确定相应的等级,其处理流程见图7-9所示。7.3.1嵌套的if语句滨江学院第七章分支结构程序设计7.3.1嵌套的if语句滨江学院第七章分支结构程序设计#includestdio.hvoidmain(){intscore;printf(Enterscore:);scanf(%d,&score);printf(score=%d:,score);if(score100||score0)printf(Errodata!\n);elseif(score=90)printf(A\n);elseif(score=80)printf(B\n);elseif(score=70)printf(C\n);elseif(score=60)printf(D\n);elseprintf(E\n);}7.3.1嵌套的if语句滨江学院第七章分支结构程序设计•【程序分析】–当执行以上程序时,首先输入学生的成绩,然后进入if语句。–if语句中的表达式将依次对学生成绩进行判断,若能使某if后的表达式值为1,则执行与其相应的子句,之后便退出整个if结构。–例如,若输入的成绩为86分,首先输出:score=86:,当从上向下逐一检测时,使score=80这一表达式的值为1,因此在以上输出之后再输出B,然后便退出整个if结构。–如果输入47分,则首先输出:score=47:,因为所有if子句中的表达式的值都为0,因此执行最后else子句中的语句,接着输出E。然后退出if结构。7.3.1嵌套的if语句滨江学院第七章分支结构程序设计7.3.2switch语句•switch语句形式如下:switch(表达式){case常量表达式1:语句1case常量表达式2:语句2……case常量表达式n:语句ndefault:语句n+1}switch语句体可以是整型表达式或字符型表达式case语句标号1、default标号可以出现在语句体中任何标号位置上。在switch语句体中也可以没有default标号。2、case语句标号后的语句1、语句2等,可以是一条语句,也可以是若干语句。3、必要时,case语句标号后的语句可以省略不写。4、在关键字case和常量表达式之间一定要有空格。滨江学院第七章分支结构程序设计•【例7-5】用switch语句改写例7-4。#includestdio.hvoidmain(){intscore;/*score中存放学生的成绩*/printf(Enteramark:);scanf(%d,&score);printf(score=%d:,score);if(score100||score0)printf(Errordata!\n);else{switch(score/10){case10:case9:printf(A\n);case8:printf(B\n);case7:printf(C\n);case6:printf(D\n);default:printf(E\n);}}}7.3.2switch语句滨江学院第七章分支结构程序设计7.3.2switch语句•【程序分析】当执行以上程序,输入了一个73分的学生成绩后,接着执行switch语句,首先计算switch之后一对括号中的表达式:73/10,它的值为7,然后寻找与7吻合的case7分支,开始执行其后的各语句。执行该程序的输入输出结果如下:输入:Enteramark:73↙输出:score=73:CDE•在输出了与73分相关的C之后,又同时输出了与73不相关的等级D、E,这显然不符合原意。为了改变这种多余输出的情况,switch语句常需要与break语句配合使用。滨江学院第七章分支结构程序设计三、在switch语句体中使用break语句•break为C语言关键字,break语句又称间断语句。可以将break语句放在case标号之后的任何位置,通常是在case之后的语句最后加上break语句。每当执行到break语句时,立即跳出switch语句体。7.3.2switch语句滨江学院第七章分支结构程序设计7.3.2switch语句•【例7-6】现用break语句修改【例7-5】的程序。#includestdio.hvoidmain(){intscore;printf(Enteramark:);scanf(%d,&score);printf(score=%d:,score);if(score100||score0)printf(Errordata!\n);else{switch(score/10){case10:case9:printf(A\n);break;case8:printf(B\n);break;case7:printf(C\n);break;case6:printf(D\n);break;default:printf(E\n);}}}滨江学院第七章分支结构程序设计7.3.2switch语句•【程序分析】程序执行过程如下:–(1)当给score输入100时,switch后一对括号中的表达式:score/10的值为10。因此选择case10分支,因为没有遇到break语句,所以继续执行case9分支,输出:score=100:A之后,遇break语句,执行break语句,退出switch语句体。由此可见,成
本文标题:第07章分支结构.
链接地址:https://www.777doc.com/doc-2152793 .html