,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,制作者:王甜甜,C+的控制语句,制作者:王甜甜C+的控制语句,1,学习内容,C+语句概述,C+程序的三种基本结构,顺序结构,分支结构,循环结构,限定转向语句,break,continue,学习内容C+语句概述,2,C+语句概述,语句(statement),是程序中最小的可执行单位。,一条语句可以完成一种基本操作,若干条语句组合在一起就能实现某种特定的功能。,C+中语句可以分为以下三种形式:,1、单一语句,在任何一个表达式后面加上分号(;)就构成了一条简单的C+语句,例如:,c=a+b;,ab?a:b;,cout“Hello C+”endl;,C+语句概述语句(statement),3,C+语句概述,2.空语句,仅由单个分号构成的语句,即,;,空语句不进行任何操作。该语句被用在从语法上需要一条语句,但实际上却又不进行任何操作的地方。,3.复合语句,复合语句是用一对花括号 括起来的语句块。复合语句在语法上等效于一个单一语句。,使用复合语句应,注意,:,(1)花括号必须配对使用;,(2)花括号外不要加分号,C+语句概述2.空语句,4,C+程序的三种基本结构,顺序结构,分支结构,循环结构,C+程序的三种基本结构顺序结构,5,顺序结构,B,A,程序按照语句的书写顺序依次执行,语句在前的先执行,语句在后的后执行,只能满足设计简单程序的要求。,顺序结构BA程序按照语句的书写顺序依次执行,语句在前的先执行,6,分支结构,B,N,A,Y,条 件P,在分支结构中,程序根据判断条件是否成立,来选择执行不同的程序段。也就是说,这种程序结构,能有选择地执行程序中的不同程序段。,分支结构BNAY条 件P在分支结构中,程序根据判断条件是否成,7,循环结构,在循环结构中,程序根据判断条件是否成立,来决定是否重复执行某个程序段。,条 件P,A,当型循环,直到型循环,真,假,假,条 件P,A,假,真,循环结构在循环结构中,程序根据判断条件是否成立,来决定是否重,8,if 语句,if,语句是最常用的一种分支语句,也称为条件语句。,if,语句有三种形式:,单分支,if,语句、,双分支,if,语句,多分支,if,语句,if 语句if语句是最常用的一种分支语句,也称为条件语句。,9,单分支if 语句,语法:,if(表达式),语句,执行过程,先计算关键字if后面的表达式的值,,若为真,则执行if后的“语句”部分,,否则跳过该“语句”部分。不管是否执行“语句”部分,最后都要接着“语句”部分的后面,继续执行程序的其它部分。,真,假,表达式,语句,单分支if 语句语法:真假表达式语句,10,单分支if 语句,说明:,括号不能省略。,在if(表达式)后不能加分号“;”。,关键字if的后面的表达式可以是任意的表达式,只要表达式的值为非0,即当真值处理,否则当假值处理。,if语句的内嵌语句可以是单一语句,也可以是复合语句。,尽量使if语句的内嵌语句比if语句缩进这是良好编程书写风格,。,例子:,int x=0,y=2;,if(x=0),y+;,coutxy;,单分支if 语句说明:int x=0,y=2;,11,双分支if语句,语法格式:,if,(表达式),语句块1,else,语句块2,执行过程:,先判断表达式的值,,若为真,则执行语句块1,,否则执行语句块2。,不管程序执行语句块1还是执行语句块2,最后都要跳到语句块2的后面接着执行程序中后面的语句。,真,假,表达式,语句块1,语句,块,2,双分支if语句语法格式:真假表达式语句块1语句块2,12,双分支if语句,说明:,语句块1、语句块2既可以是单一语句也可以是用括起来的复合语句。,else,子句必须与,if,子句配对使用,不能单独使用,else,子句必须处在,if,子句的后面,且,else,语句总是和离它最近的前面未配对的,if,语句配对,。,例子:,输入一个年号,判断是否为闰年,如果是则输出“yes”,否则输出“Not”。,分析:只要满足下列两个条件之一者,即是闰年。,年号能被4整除,但要排除同时能被100整除;,年号能被400整除。,#include,void main(),int y;,couty;,if(y%4=0&y%100!=0)|(y%400=0),coutYes;,else,coutNot;,coutn程序运行结束;,双分支if语句说明:#include iostream.h,13,多分支if语句,一般形式为:,if(表达式1),语句1,else if(表达式2),语句2,else if(表达式3),语句3,else if(表达式N),语句N,else,语块N+1,说明:,在if语句嵌套中else与if配对关系,else与离它最近的if语句相匹配。,真,真,真,假,假,假,表达式1,表达式2,语句1,语句2,语句3,语句4,多分支if语句一般形式为:说明:真真真假假假表达式1表达式2,14,多分支if语句,#include,void main(),float score;,coutscore;,if(score=90),cout=80),cout=70),cout=60),coutPass!;,else,coutscore80为良,80score70为中等,70score60为及格,score60为不及格。,多分支if语句#include例子:,15,switch语句,一般形式为:,switch(表达式),case 常数1:语句序列1;case 常数2:语句序列2;default:语句序列3;,执行过程:,说明:,1、表达式可以是整形、字符型、枚举型,2、case 后的常量类型=switch中表达式类型,3、常数1-常数n必须互不相同且每一常数后面要有冒号:,4、各case子句和default子句的次序可任意,5、default可以没有,但最好不省略,6、如果要使每个case处相当于一种if(s)else的效果,必须在其语句组最后加上break语句。,7、各case子句后面必须是常数,而不能是变量或表达式,switch语句一般形式为:说明:,16,switch语句,#include,void main(),float score;,int a;,coutscore;,a=score/10;,switch(a),case 0:,case 9:coutExcellent!;break;,case 8:coutGood!;break;,case 7:coutRight!;break;,case 6:coutPass!;break;,default:coutscore80为良,80score70为中等,70score60为及格,score60为不及格。,switch语句#include例子,17,switch,和,else,-,if,的比较,else-if,比,switch,的条件控制更强大一些,else-if,可以依照各种逻辑运算的结果进行流程控制,switch,只能进行=判断,并且只能是整数判断,switch,比,else-if,更清晰,两者都要尽量避免用得过多、过长,尤其不要嵌套得太多,它们大大增加程序的分支,使逻辑关系显得混乱,不易维护,易出错,switch和else-if的比较else-if比switc,18,循环语句,C+提供了三种循环结构:,while,循环语句、,do-while,循环语句,for,循环语句,循环语句C+提供了三种循环结构:,19,while语句,语法形式:,while,(表达式),循环体语句,执行过程:,首先判断,while,后面的表达式的值,,若表达式的值为真,则执行,while,的内嵌语句(即循环体)一次;,然后重复以上过程,直到表达式的值为假时,才退出循环,接着执行循环体语句后面的其它程序语句,循环体语句,表达式,F,T,while,while语句语法形式:循环体语句表达式FTwhile,20,while语句,例子:,求,#include,#include,void main(),int i,n;,n=0;,i=1;,while(i=100),n=n+i;,i+;,coutn=nendl;,while语句例子:求#includeiostream.h,21,do-while 循环语句,语法形式:,do,循环体语句,while(表达式);,执行过程:,首先执行do-while的内嵌语句(循环体语句)一次,然后再判断while后面的表达式的值,若表达式的值为真,则重复执行do-while的内嵌语句,,如此反复,直到表达式的值为假时,循环结束,执行while后面的语句。,statements,表达式,F,T,do/while,do-while 循环语句语法形式:statements表达,22,do-while 循环语句,例子:,求,#include,void main(),int i,n;,n=0;,i=1;,do n=n+i;,i+;,while(i=100);,coutn=nendl;,do-while 循环语句例子:求#includeiost,23,while语句和do-while,在循环体相同的情况下while语句和do-while语句的功能基本相同,二者的区别在于:,while:,先验证条件,再执行语句,do/while:先执行语句,再验证条件,当循环条件一开始就为假时,do-while语句中的循环体至少会被执行一次,而while语句则一次都不执行。,while语句和do-while在循环体相同的情况下whil,24,for循环语句,语法形式:,for,(表达式1;表达式2;表达式3),循环体语句,说明:,表达式1:,初始化表达式,表达式2:,判断条件表达式,表达式3:,修正表达式,循环参数调整,循环体有多条语句时,要加,表达式可缺省,但,分号不能省,,如,int n=1;,for(;n10;n+),变量可在表达式中声明:,for(int n=1;n10;n+),等价于:,while(表达式2),语句;表达式3;,for循环语句语法形式:等价于:,25,for循环语句,执行过程:,执行for后面的表达式1;,执行表达式2,若表达式2的值为真,则执行for语句的内嵌语句(即循环体语句),然后执行第步,若为假,则循环结束,执行第步;,执行表达式3;,返回继续执行第步;,循环结束,执行for语句的循环体下面的语句,。,表达式1,表达式2,表达式3,循环体语句,T,F,for循环语句执行过程:表达式1 表达式2表达式3循环体语句,26,for循环语句,例子:,求,#include,void main(),int i,n;,n=0;,for(i=1;i=100;i+),n=n+i;,coutn=nendl;,for循环语句例子:求#includeiostream.h,27,选择三种循环的一般原则,如果循环次数已知,用,for,如果循环次数未知,用,while,如果循环体至少要执行一次,用,do-while,这只是“一般”原则,不是“原则”,选择三种循环的一般原则如果循环次数已知,用for,28,循环嵌套,在一个循环的循环体中又包含另一个循环语句,称为循环嵌套。,C+的三种循环语句可以相互嵌套,构成循环嵌套。以下几种都是合法的循环嵌套:,(1)for(;),for(;),(2)while(),for(;),do ,while();,(3)do,for(;),while();,循环嵌套在一个循环的循环体中又包含另一个循环语句,称为循环嵌,29,循环嵌套,在嵌套的各层循环体中,使用复合语句(即用一对大花括号将循环体语句括起来)保证逻辑上的正确性,内层和外层循环控制变量不应同名,以免造成混乱,嵌套的循环最好采用右缩进格式书写,以保证层次的清晰性,循环嵌套不能交叉,即在一个循环体内必须完整的包含着另一个循环,循环嵌套在嵌套的各层循环体中,使用复合语句(即用一对大花括号,30,限定转向语句,br