1C++的语句类型C++程序的组成:一个C++程序可以由若干个源程序文件组成,一个源程序文件可以有若干个函数和编译预处理命令组成,一个函数由函数说明部分和函数执行部分组成,函数执行部分由数据定义和若干个执行语句组成。语句是组成程序的基本单元。C++语言的语句可以分成以下六大类:(1)说明语句:对变量、符号常量、数据类型的定义性说明例如:inta,b,c;//定义整型变量a、b、c①仅向编译系统提供说明信息,在程序执行期间并不执行任何操作。如,定义变量语句inta,b,c;是告诉编译系统为变量a、b、c各分配4个字节的存储空间用于存放变量的值。程序执行时,该语句就不起任何作用了。②说明语句可出现在函数内、外,允许出现语句的任何地方。(2)控制语句:能改变程序执行顺序完成控制功能的语句。C++中控制语句主要有:(3)函数和流对象调用语句:函数调用语句又一次函数调用加一个分号构成一个语句,如:【例1】分析下面程序的功能:#includeiostreamusingnamespacestd;intmax(inta,intb)//自定义函数{if(ab)returna;elsereturnb;}intmain(){inta,b,m;coutInputa,b:;cinab;m=max(a,b);//函数调用语句coutmax=mendl;system(pause);return0;}函数max(a,b)的功能为求a、b两个变量中较大值的函数。在一次函数调用后加上一个分号所构成的语句称为函数调用语句。其一般格式为:函数名(实参);例如:m=max(a,b);该语句实现将max(a,b)的返回值赋给变量m。if()~else~switchfor()~while()~do~while()continuebreakreturn2(4)表达式语句:由一个表达式后加一个分号构成一个语句。例如:由一个赋值表达式加一个分号构成一个赋值表达式语句:y=x*x+2*x;注意:i=i+1//是一个赋值表达式i=i+1;//是一个赋值语句(5)空语句:;只有一个分号所构成的语句称为空语句。下面就是一个空语句:;空语句什么也不做,它将在特殊的时候是有用的,讲循环时再细讲。(6)复合语句(语句块):用{}将若干语句括起来构成的语句。“{}”后不再需要分号。复合语句主要用于控制语句中。例如:{t=a;a=b;b=t;}//实现a,b数值的交换。程序的三种基本结构即顺序结构、分支结构和循环结构,都是通过语句来实现的。1.顺序结构:按语句顺序依次执行的结构称为顺序结构。2.分支结构(1)两路分支:在两种可能的操作中按条件选取一个执行的结构称为分支结构。(2)多路分支:在多种可能的操作中按条件选取一个执行的结构称为分支结构,3.循环结构:在人们所要处理的问题中常常遇到需要反复执行某一操作的情况,计算机实现这一操作的程序就要用到循环结构。循环结构有两种形式,即当型循环结构和直到型循环结构。3分支语句分支语句用于实现分支程序设计。分支程序有两路分支结构和多路分支结构,两路分支结构可用if语句实现,多路分支结构可以用嵌套的if语句或switch语句实现。1.if语句的三种形式(1)单选条件语句语句格式:if(表达式)语句执行过程:当表达式的值为非0(真)时,执行语句,否则不执行语句。说明:①表达式必须用“()”括起来;②语句只能是单个语句或复合语句。(2)两选条件语句语句格式:if(表达式)语句1else语句2执行过程:当表达式的值为非0(真)时,执行语句1,否则执行语句2。(3)多选条件语句多选条件语句的格式为:if(表达式1)语句1elseif(表达式2)语句2elseif(表达式2)语句3......elseif(表达式n-1)语句n-1else语句n单选条件语句执行过程图表达式语句假(0)真(非0)两选条件语句执行过程图表达式语句1假(0)语句2真(非0)真真真假假表式1表式2表式n语句1语句2语句n语句n+1...假多分支结构流程图4【例2】输入两个整数a和b,用单选条件语句实现输出其中较大的一个数。程序流程图如右图所示。程序如下:#includeiostreamusingnamespacestd;intmain(){inta,b,max;coutInputa,b:;cinab;max=a;if(bmax)max=b;coutmax=maxendl;system(pause);return0;}程序执行后屏幕显示:Inputa,b:38max=8【例3】输入两个整数a和b,用两选条件语句实现输出其中较大的一个数。程序流程图如右图所示,程序代码如下:#includeiostreamusingnamespacestd;intmain(){inta,b,max;coutInputa,b:;cinab;if(ab)max=a;elsemax=b;coutmax=maxendl;system(pause);return0;}程序执行后提示:Inputa,b:38max=8求两个数中的最大值流程图max=bbmax假(0)真(非0)max=a输出max开始结束输入a、b求两个数中的最大值流程图假(0)真(非0)max=aabmax=b输出max输入a、b开始结束5【例4】已知下列分段函数,要求编一程序,输入x,输出相应的y的值。分段函数程序流程图如右图所示。程序代码如下:#includeiostreamusingnamespacestd;intmain(){floatx,y;cout请输入一个实数x=;cinx;if(x0)y=x+1;elseif(x10)y=x*x-5;elsey=x*x*x;couty=yendl;system(pause);return0;}程序执行后提示:请输入一个实数x=3y=42.if语句的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套。其一般格式为:if(表达式1)if(表达式2)语句1else语句2elseif(表达式3)语句3else语句4分段函数流程图开始输入xx0x10y=x3输出yy=x2-5y=x+1结束真真假假x2-50≤x10y=x+1x0x3x≥10注意:else总是与其前面最近的还没有配对的if进行配对.6【例5】使用if语句嵌套的方法实现【例4】程序流程图及程序代码如下:#includeiostreamusingnamespacestd;intmain(){floatx,y;cout请输入一个实数x=;cinx;if(x=0)if(x=10)y=x*x*x;elsey=x*x-5;elsey=x+1;couty=yendl;system(pause);return0;}程序执行后提示:请输入一个实数x=-3y=-2注意:在该程序中,内层的if语句嵌套在外层的if语句的if部分。C++规定if语句嵌套使用时,else与if的的配对关系是:else总是与其前面最近的还没有配对的if进行配对。例如:如果要改变这种约定,则应该用花括号构成复合语句。例如:if(表达式1){if(表达式2)语句1}else语句2分段函数流程图假开始输入xx≥0x≥10y=x3输出yy=x2-5y=x+1结束假真真if(表达式1)if(表达式2)语句1else语句2if(表达式1){if(表达式2)语句1else语句2}等价于else与第一个if配对7【例6】求三个整数a、b、c中的最大者,a、b、c由键盘输入。(自行完成)#includeiostreamusingnamespacestd;intmain(){inta,b,c,max;cout请输入三个整数a,b,c:;cinabc;if(ab)if(ac)max=a;elsemax=c;elseif(bc)max=b;elsemax=c;couta,b,c中最大的数max=maxendl;system(pause);return0;}2.switch语句(开关语句):实现多路分支程序。语句格式switch(条件表达式){case常量表达式1:〔语句1〕case常量表达式2:〔语句2〕......case常量表达式n-1:〔语句n-1〕〔default:语句n〕}说明:(1)条件表达式与常量表达式只能是整型或字符型表达式;(2)每个case后面的常量表达式的值必须互不相同;(3)一个case后可有多个语句(不必用花括号),也可以没有任何语句。注意:在执行switch语句的过程中,每当执行完一个case后面的语句后,程序会不加判断地自动执行下一个case后面的语句。每个case后面的常量表达式只起语句标号的作用,是switch语句中执行各语句的入口,并不在此进行条件判断程序执行后提示:请输入三个整数a,b,c:145a,b,c中最大的数max=5执行过程:将条件表达式的值与case后常量值比较,若相等就执行此case后语句,完后再执行下一个case语句,最后执行default后的语句。8【例7】输入0~6的整数,将其转换成对应的星期几。程序代码如下:#includeiostreamusingnamespacestd;intmain(){inta;cout请输入一个0-6的整数(分别对应周日至周六):;cina;switch(a){case0:coutSunday\n;case1:coutMonday\n;case2:coutTuesday\n;case3:coutWednesday\n;case4:coutThursday\n;case5:coutFriday\n;case6:coutSaturday\n;default:coutInputdataerror.\n;}system(pause);return0;}3.break语句:中止当前语句的执行,并跳转到下一条语句处执行。语句格式:break;若将上例程序中switch语句的内嵌代码改写如下,请分析结果;case0:coutTodayisSunday\n;break;case1:coutTodayisMonday\n;break;case2:coutTodayisTuesday\n;break;case3:coutTodayisWednesday\n;break;case4:coutTodayisThursday\n;break;case5:coutTodayisFriday\n;break;case6:coutTodayisSaturday\n;break;default:coutInputdataerror.\n;在本例中,若运行程序时输入4,则执行结果为:ThursdayFridaySaturdayInputdataerror程序执行后发现结果并不是我们希望的,而要想实现我们的要求,就应该在执行完指定的一个case分支后,使程序跳出switch语句,即终止switch语句的执行,而这操作可用break语句来实现。9注意:从开关语句的执行过程可知,任一开关语句均可用条件语句来实现,但并不是任何条件语句均可用开关语句来实现,这是由于开关语句限定了表达式的取值类型,而条件语句中的条件表达式可取任意类型的值。【例8】商店打折售货。购货金额数量越大,折扣越大。具体标准如下(m:购货金额,d:折扣率)。要求从键盘上输入购货金额,计算并输出实付的金额。#includeiostreamusingnamespacestd;intmain(){intm,c;floatd,f;coutInputm:;c