您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第3章 程序流程控制
主讲教师:吴秀芹电子邮件:wxqltl@163.com电话:650772518645952257办公室地址:一教D座309室¯选择结构及if、switch语句¯循环结构及循环语句¯跳出循环¯异常处理及try-catch-finally语句if语句是最常用的选择语句,它根据布尔表达式的值来判断是否执行后面的内嵌语句。if(布尔表达式){表达式A;}else{表达式B;}3.1.1if语句if(booleanexpression1){表达式A;}elseif(booleanexpression2){表达式B;}elseif(booleanexpression3){表达式C;}…………else{表达式N;}If语句的嵌套:程序运行结果如下所示:例:输入一个浮点数,将其进行四舍五入,并输出。staticvoidMain(string[]args){doublex;inty;Console.WriteLine(请输入一个浮点数:);x=Convert.ToDouble(Console.ReadLine());if(x-(int)x=0.5){y=(int)x+1;}else{y=(int)x;}Console.WriteLine({0}经过四舍五入后的结果是:{1},x,y);Console.ReadLine();}C#语言提供了switch开关语句专门处理多路分支的情形。switch(switch_expression){casevalue1:{statement1;}break;casevalue2:{statement2;}break;……casevalueN:{statementN;}break;[default:{statementM;}break;]}3.1.2switch语句例:假设考查课的成绩按优秀、良好、中等、及格和不及格分为五等,分别用“优秀”、“良好”、“中等”、“及格”、“不及格”来表示,但实际的考卷为百分制,分别对应的分数段为90-100、80-89、70-79、60-69、0-59,请使用switch语句将用户输入的考卷成绩转换为考查课成绩,并输出。程序运行结果如下所示:staticvoidMain(string[]args){intx;stringy=;Console.WriteLine(请输入百分制分数:);x=Convert.ToInt32(Console.ReadLine());if(x100||x0){Console.WriteLine(您输入的分数不合法!);}else{inttemp=x/10;switch(temp){case10:y=优秀;break;case9:y=优秀;break;case8:y=良好;break;case7:y=中等;break;case6:y=及格;break;default:y=不及格;break;}Console.WriteLine(该学生百分制下{0}分经转换,为5分制下的{1}.,x,y);}Console.ReadLine();}for循环语句是C#中使用频率最高的循环语句,在事先知道循环次数的情况下,使用for循环语句比较方便。for循环语句的格式为:for(初始条件;结束条件;循环变量迭代器){循环体}3.2.1for语句程序运行结果如下所示:例:使用for循环,求输入任意大于0整数的阶乘。staticvoidMain(string[]args){Console.WriteLine(请输入一个大于0的整数:);inta=Convert.ToInt32(Console.ReadLine());if(a=0){Console.WriteLine(你输入的数字不合法!);}else{intresult=1;for(inti=1;i=a;i++){result=result*i;}Console.WriteLine({0}的阶乘是{1},a,result);}Console.ReadLine();}while语句有条件地将循环体内的语句执行0遍或若干遍。其语法格式为:While(布尔表达式){embedded-statement;}3.2.2while语句do-while语句与while语句框架上相似,不同之处在于,它将循环体内的语句至少执行一次。其语法格式为:do{embedded-statement;}while(布尔表达式)3.2.3do-while语句例:使用while或do-while循环,求输入任意大于0整数的阶乘。程序运行结果如下所示:staticvoidMain(string[]args){Console.WriteLine(请输入一个大于0的整数:);inta=Convert.ToInt32(Console.ReadLine());inty=a;intresult=1;do{result*=y;y--;}while(y0);Console.WriteLine({0}的阶乘是{1},a,result);Console.ReadLine();}foreach语句是在C#中新引入的,它表示遍历一个集合或数组中的各元素,并针对各个元素执行内嵌语句。foreach语句的语法格式为:foreach(数据类型变量in集合或者数组){//语句}3.2.4foreach语句staticvoidMain(string[]args){int[]fibarray=newint[]{0,1,2,3,5,8,13};foreach(intiinfibarray){Console.WriteLine(i);}Console.ReadLine();}foreach(数据类型元素(变量)in集合或者数组){//语句}程序运行结果如下所示:例:使用foreach循环遍历所输入字符串中的每个字符,分别输出该字符串中字母、数字以及标点符号的个数。当判断某指定的Unicode字符是否属于字母类别时,可使用char类的IsLetter方法,其定义为publicstaticboolIsLetter(charc);如果参数c是字母,则返回值为true;否则,为false。if(char.IsLetter(chr))//检查字母countLetters++;当判断某指定的Unicode字符是否属于数字类别或标点符号类别时,可分别使用char类的IsDigit方法以及IsPunctuation方法。staticvoidMain(string[]args){intcountLetters=0;//存放字母的个数intcountDigits=0;//存放数字的个数intcountPunctuations=0;//存放标点符号的个数stringinput;//用户提供的输入Console.WriteLine(请输入一个字符串);input=Console.ReadLine();//声明foreach循环以遍历输入的字符串中的每个字符。foreach(charchrininput){if(char.IsLetter(chr))//检查字母countLetters++;if(char.IsDigit(chr))//检查数字countDigits++;if(char.IsPunctuation(chr))//检查标点符号countPunctuations++;}Console.WriteLine(“字母的个数为:{0},countLetters);Console.WriteLine(“数字的个数为:{0},countDigits);Console.WriteLine(“标点符号的个数为:{0},countPunctuations);}为所有计数器设置初始值接受输入对输入的每一个字符都进行循环使用了所有输入的字符之后,循环自动终止如在循环体内遇到特定的情况需要在循环条件满足的情况下终止循环,就需要用到中断循环语句。¯Break:立即终止循环,并跳转到循环后面第一行代码执行。¯Continue:立即终止当次的循环(并不影响循环的继续执行)。3.2.5跳出循环1、break语句作用:1)从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句;2)break语句只能用于循环语句和switch语句。staticvoidMain(string[]args){doublearea;intr;for(r=1;r=10;r++){area=3.1415926*r*r;if(area100)break;Console.WriteLine(areais{0},area);}Console.ReadLine();}2、continue语句(1)作用:结束本次循环,即跳过循环体中下面尚未执行的语句,接着执行对循环条件的判断。(2)break语句和continue语句的区别1)continue语句只结束本次循环,不终止整个循环的执行;2)break语句是终止整个循环的执行,不再进行条件判断。intn;for(n=100;n=200;n++){if(n%2==0)continue;Console.WriteLine({0},n);}Console.ReadLine();if(n%2!=0)Console.WriteLine({0},n);错误语法错误逻辑错误不通过编译通过编译,运行出错程序运行时的错误而导致程序的非正常终止,叫做程序异常。3.3.1异常的基本概念staticvoidMain(string[]args){Console.Write(请输入x的值:);intx,y=0;if(!int.TryParse(Console.ReadLine(),outx))Console.WriteLine(输入格式不正确!);else{if(x==10||x==5||x==0)Console.WriteLine(x的值不能为10、5或0);elsey=100/(10-x)/(x-5)/x;}Console.WriteLine(y={0},y);Console.ReadLine();}staticvoidMain(string[]args){Console.Write(请输入x的值:);intx,y=0;x=Convert.ToInt32(Console.ReadLine());y=100/(10-x)/(x-5)/x;Console.WriteLine(y={0},y);Console.ReadLine();}BinaryReaderbr1=newBinaryReader(D:\\students.bin);Strudents1=Student.Load(br1);br1.Close();3.3.1异常的基本概念一个性能良好且稳健的程序应该允许异常情况发生,但应避免终止运行,这就要求编程人员能够预知可能发生的特殊情况,并且在程序编码中处理这些特殊情况,我们称这个过程叫“异常处理”。3.3.1异常的基本概念异常处理结构可以用来捕捉在块的执行期间发生的各种异常。它可以包含try块、catch块和finally块。try{//有可能发生异常的代码块}catch{//当try块中的代码发生异常时,响应的代码}finally{//不管try块中的代码是否发生异常,该代码块一定执行}必选项可选项可选项3.3.2异常处理结构staticvoidMain(string[]args){Console.Write(请输入x的值:);intx,y=0;try{x=Convert.ToInt32(Console.ReadLine());y=100/(10-x)/(x–5)/x;}catch{Console.WriteLine(输入不正确);}Console.WriteLine(y={0},y);Console.ReadLine();}staticvoidMain(string[]args){Console.Write(请输入x的值:);intx,y=0;x=Convert.ToInt32(Console.ReadLine())
本文标题:第3章 程序流程控制
链接地址:https://www.777doc.com/doc-3351967 .html