您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 5-流程控制语句与函数
1第5章流程控制语句与函数5.1控制程序流程5.2使用选择语句5.3使用循环语句5.4使用goto语句5.5嵌套使用流程控制语句5.6函数5.7常用内部函数5.8小结25.1控制程序流程控制程序流程的方法很多,主要有如下3种:选择语句:如同考试中的单选题目,选择执行了某条语句,另一条就不会再执行。循环语句:在需要将一个表达式进行多次重复运算时,可以使用循环语句,指定其循环次数或者界定其退出循环的条件。goto语句:即标记语句,使程序自动跳到标记语句处执行,标记语句执行完毕又直接回到调用标记语句处。需要注意的是,在程序中最好不使用goto语句,因为该语句会使得程序代码可读性很差。35.2使用选择语句5.2.1if语句用if语句实现单分支选择结构:if(表达式)语句;语句中的表达式通常用于表示条件,应为关系表达式或逻辑表达式。语句只是一条语句,如果在条件满足时需要执行多条语句,应使用花括号({})括起来,使之成为语句块。“(表达式)”中的括号不能省略。yes语句表达式为true?no45.2.1if语句示例:staticvoidMain(string[]args){doublescore;score=Convert.ToDouble(Console.ReadLine());if(score=60)Console.WriteLine(恭喜你,通过了这次考试!);Console.Read();}55.2.1if语句用if语句实现双分支选择结构:if(表达式)语句1;else语句2;yes语句1表达式为true?no语句265.2.1if语句用if语句实现多分支选择结构If(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;……else语句n;75.2.2switch语句在C#语言中,除使用if语句实现多分支外,也可以使用switch语句。switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;……case常量表达式n:语句n;break;default:语句n+1;break;}语句2Switch表达式语句n语句1语句n+1下一条语句85.2.2switch语句switch表达式的类型为sbyte、byte、short、ushort、int、uint、long、ulong、char、string、枚举或用户自定义类型。每个case分支中的常量表达式必须能隐式转换为switch表达式的类型,且常量表达式的值不能相同,从而保证分支选择的唯一性。如果某个分支有多条语句,可以用花括号括起来,也可以不加花括号。default分支可有可无,但是每个switch语句最多只能有一个default分支。当default语句缺省时,如果switch后面的表达式值与任意常量表达式值不相等,将不执行任何语句,直接退出switch语句。各分支语句中的break不可省略,否则将会出现错误,这一点跟Java和C++不同。使用switch语句时一定要注意,case后面必须是常量表达式,以冒号结束而不是分号。95.2.2switch语句示例:staticvoidMain(string[]args){doublescore;charclass1;inti;Console.WriteLine(请输入你的成绩:);score=Convert.ToDouble(Console.ReadLine());i=(int)score/10;switch(i){case10:case9:class1='A';break;case8:class1='B';break;case7:class1='C';break;case6:class1='D';break;default:class1='E';break;}Console.WriteLine(你的成绩等级为:{0},class1);}105.2.3switch语句的控制类型switch语句的控制可以按case语句的排列先后顺序进行,也可以通过跳转语句来实现。示例:实现switch语句的跳转语句。staticvoidMain(string[]args){intdays=0;intmonth=3;switch(month){case1:case3:case5:case7:case8:case10:case12:days=31;break;case2:days=28;break;case4:case6:case9:case11:days=30;break;default:days=0;break;}Console.WriteLine(thismonthhas{0}days,days);}115.3使用循环语句5.3.1while语句while语句是用来实现循环的语句,该类循环先测试循环条件再执行循环体,按照不同条件执行循环体部分零次或多次。它的语法形式如下。while(表达式)循环体部分;循环体表达式为true?yesno125.3.1while语句注意:1.循环体如果包含一条以上的语句,应以花括号括起来作为复合语句。2.在循环体中,通常应包含改变循环条件表达式值的语句,否则便会造成无限循环。3.由于先判断条件,可能出现第一次测试条件时,表达式的值就为false。此种情况下循环体将一次也不执行,又称“允许0次循环”。135.3.1while语句示例:classTestWhile{staticvoidMain(string[]args){intnumber=1,sum=0;while(number=10){sum+=number;number++;}Console.WriteLine(thesumis{0},sum);Console.Read();}}执行上述代码,运行结果为:thesumis55。145.3.2do语句do循环语句实现的是直到型循环,该类循环先执行循环体再测试循环条件。do循环体语句while(表达式);语句表达式为true?noyes155.3.2do语句示例:classTestWhile{staticvoidMain(string[]args){intnumber=1,sum=0;do{sum+=number;number++;}while(number=10);Console.WriteLine(thesumis{0},sum);Console.Read();}}执行上述代码,运行结果为:thesumis55。165.3.3for语句for(表达式1;表达式2;表达式3)语句;计算表达式1计算表达式2false语句计算表达式3true175.3.3for语句表达式1、2、3都可以省略,分号不能省略。如果表达式1、2、3都省略,则将无终止地执行循环体。表达式2是循环控制条件,如果省略,循环将无终止地进行下去。表达式1一般用于为循环控制条件赋初值,也可以是与循环变量无关的其他表达式。如果表达式1省略或者是与循环条件无关的其他表达式,则应该在for语句之前给循环控制条件赋初值。表达式3一般用于改变循环控制条件的值。如果表达式3省略或者是其他与循环条件无关的表达式,则应该在循环体中另有语句改变循环条件,以保证循环能正常结束。185.3.4foreach语句foreach(类型标识符in表达式)嵌入语句;示例:staticvoidMain(string[]args){int[]list={10,20,30,40,50,60};foreach(intiinlist)Console.Write({0,-5},i);Console.Read();}195.3.5break语句和continue语句break语句用于跳出包含它的switch、while、do、for、foreach语句。如果break不是在switch、while、do、for、foreach语句块中,将发生编译错误。当switch、while、do、for、foreach语句相互嵌套时,break语句只是跳出直接包含它的语句块。205.3.5break语句和continue语句classTestBreak{staticvoidMain(string[]args){for(inti=0;i10;i++){Console.Write(enteraword:);strings=Console.ReadLine();if(s==end)break;Console.WriteLine(youentered:{0},s);}Console.Read();}}215.3.5break语句和continue语句continue语句类似于break语句,也必须用于while、dowhile、for、foreach语句,它只从循环的当前迭代中退出,然后在循环的下一次迭代开始重新执行,而不是退出循环。需要注意如下事项:1.continue语句的目标地址为直接包含它的while、dowhile、for或者foreach语句的嵌套语句结尾。假如continue语句不能被while、dowhile、for或者foreach语句包含,将发生编译错误。2.当有while、dowhile、for或者foreach语句相互嵌套时,continue语句只适用于直接包含它的语句块。225.3.5break语句和continue语句示例staticvoidMain(string[]args){for(inti=0;i10;i++){Console.Write(enteraword:);strings=Console.ReadLine();if(s==end)continue;Console.WriteLine(youentered:{0},s);}Console.Read();}235.4使用goto语句goto语句是除选择语句、循环语句之外的控制程序流程的语句,常用于将程序流程转移出嵌套范围。goto语句的常见用法为gotolable语句。其中,lable为一个标签,其语法形式为:标签1:245.4使用goto语句示例:staticvoidMain(string[]args){intn=1,sum=0;lable:if(n=5){sum=sum+n;n++;gotolable;}Console.WriteLine(sum={0},sum);Console.Read();}255.5嵌套使用流程控制语句选择结构的嵌套:if(表达式1)if(表达式2)语句1else语句2elseif(表达式3)语句3else语句4265.5嵌套使用流程控制语句循环结构的嵌套示例:staticvoidMain(string[]args){inti=1,a=0;for(;i=5;i++){do{i++;a++;}while(i3);i++;}Console.WriteLine(a的值为{0},i的值为{1},a,i);Console.ReadLine();}275.6函数5.6.1函数的定义与使用函数在使用之前必须先定义,函数定义的形式如下。函数修饰符数据类型标识符函数名(形式参数说明列表){变量、数组的定义语句;其他可执行部分}函数的返回值是需要返回给主调函数的处理结果,由return语句给出。对于无返回值的函数,其类型标识符为void,不需要return语句285.6.1函数的定义与使用示例:编写一个函数,用于求任意两个整数之间所有数的平方和。classProgram{privatestaticintpfh(intx,inty){inti,sum=0;for(i=x;i=y;i++)sum=sum+i*i;return(sum);}}295.6.1函数的定义与使用函数的使用:在类中的某个函数中,调用本类中由“函数名”指定的函数,其语法形式如下:函数名([实际参数列表])调用另一个类的非静态函数,
本文标题:5-流程控制语句与函数
链接地址:https://www.777doc.com/doc-633806 .html