您好,欢迎访问三七文档
第3章流程控制学习目标:掌握if和switch条件分支语句的使用方法掌握do、while和for循环语句的使用方法掌握break和continue语句掌握goto跳转语句的使用方法掌握控制程序结构的方法和技巧分支C#通过条件语句来控制程序的分支,它要求条件表达式必须为布尔运算,也就是说运算结果必须为真或为假,这与C、C++有很大不同。在C或C++中,只要条件表达式的运算结果为零或非零便可以控制程序的分支,而C#对于这种情况则会发出编译错误信息。C#提供了3中分支技术:if语句Switch语句三元运算符流程控制1.用if语句实现单分支选择结构流程控制单分支选择结构执行流程图流程if(条件表达式)代码;//如果条件表达式为ture,执行该行代码,否则直接执行后面的代码……if(条件表达式){代码;//如果条件表达式为ture,执行该代码块,否则直接执行后面的代码代码;……}……或者【例3-1】编写一个程序实现如下功能:输入一个成绩,如果成绩大于等于60则输出“恭喜您,您通过了这次考试!”,否则不输出任何信息。要求编写成控制台应用程序。流程控制流程控制2.用if语句实现双分支选择结构:流程控制双分支选择结构执行流程图流程控制格式:if(表达式)语句1;else语句2;[功能]:首先计算表达式的值,如果表达式的值为true,则执行语句1,如果表达式为false,则执行语句2。或者if(条件表达式){代码;//如果条件表达式为ture,执行该代码块代码;……}else{代码;//如果条件表达式为false,执行该代码块代码;……}……流程控制流程控制【例3-2】编写一个程序实现如下功能:输入一个成绩,如果成绩大于等于60则输出“恭喜您,您通过了这次考试!”,否则输出“对不起,准备补考吧!”。要求编写成Windows应用程序,程序的设计界面如下图所示:流程控制界面1流程控制界面2流程控制流程控制【例3-2】程序代码3.用if语句实现多分支选择结构[格式]:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;……else语句n;流程控制嵌套的if语句流程控制【例3-3】编写一个求成绩等级的程序。要求输入一个学生的考试成绩,输出其分数和对应的等级。共分五个等级:小于60分的为“E”;60~69分为“D”;70~79分为“C”;80~89分为“B”;90分以上为“A”。要求编写成控制台应用程序。流程控制用if语句实现多分支选择结构流程控制格式:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;……else语句n;4.用switch语句实现多分支选择结构switch语句流程控制switch语句执行流程图switch(测试表达式){case表达式1:……//如果测试表达式的值等于表达式1的值,则执行该代码行或代码块break;case表达式2:……//如果测试表达式的值等于表达式2的值,则执行该代码行或代码块break;……case表达式n:……//如果测试表达式的值等于表达式n的值,则执行该代码行或代码块break;default:……//如果测试表达式的值不等于任何case表达式的值,则执行该代码行或代码块}流程控制测试表达式可以是整型、字符型、字符串型或枚举,而每一个case表达式则必须是常量,即这个值是在编译时定义的,而不是在程序运行时定义的。switch语句会计算每个case表达式的值,直至找到相匹配的项,并执行该匹配提供的代码行或代码块,如果没有匹配,就执行default部分的代码行或代码块。流程控制使用switch语句时应注意以下几点:每个case语句体中必须包含一个break语句,default语句体也一样.只有当case语句体为空时,即case语句体中没有语句时,才允许将多个case语句放在一起使用,其后加一句代码,此时系统将一次检查多个case表达式,如果满足这些条件中的一个,就执行代码。如果要从一个case语句体跳转到另外一个case语句体,可以使用goto跳转语句。【例3-4】用switch语句重写例3-3。要求编写Windows应用程序。流程控制流程控制流程控制练习:请输入年月日,求出该日是该年的第几天?闰年的条件是:1、能被4整除,但不能被100整除的年份都是闰年,如1996年,2004年是闰年。2、能被100整除,又能被400整除的年份是闰年,如1600年、2000年是闰年。不符合这两个条件的年份不是闰年。①能被4整除,但不能被100整除。②能被100整除,又能被400整除。可以用一个逻辑表达式来表示:(year%4==0&&year%100!=0)||year%400==0当year为某一整数值时,如果上述表达式值为真(1),则year为闰年;否则year为非闰年。流程控制三元运算符三元运算符有3个操作数,其本质上是ifelse语句的一个简化版本,语法如下:通过计算测试表达式可获得一个布尔值,当值为true时,执行语句1,否则就执行语句2。注意三元运算符始终要求返回一个结果,因而对于实现“如果顾客一次性购买10件以上该商品,打8折,否则不打折”这样的情况,代码会十分简短:流程控制测试表达式?语句1:语句2doubleproductDiscount=productOderNumber10?0.8:1.0;循环在什么情况下使用循环当需要对某些语句重复执行,或需要多次执行同一任务,直到完成另一个比较大的任务时,可以使用循环结构。C#提供了3种循环结构,用来实现重复性的任务:do循环while循环for循环流程控制do….while循环do循环保证循环体至少执行一次do循环的执行方式为:首先执行标记为do循环的代码,然后计算布尔表达式的值,如果为true,则再次执行循环代码,直到布尔表达式的值为false时退出循环。需要注意的是while语句后面的分号不能省略,否则会产生错误。流程控制do{……//代码或代码块}while(布尔表达式);do…while语句执行流程语句执行流程图流程控制流程控制【例3-5】编一个程序按下列公式求e的值(要求精度达到1e-6)。流程控制【例3-5】程序代码while循环流程图:流程控制while语句执行流程while(布尔表达式){……//代码或代码块}while循环非常类似于do循环,它和do循环的重要区别在于:while循环在每个循环的开始对布尔表达式进行计算和判断,因此有可能完全不执行循环,而直接跳转到循环后面的代码。流程控制流程控制【例3-6】编程求下式的值(要求编写成控制台应用程序):【例3-6】程序代码for循环流程图流程控制for循环do循环和while循环可以用于执行不知道循环次数的任务,如果事先知道语句要重复执行的次数,则可通过for循环来实现。要定义for循环,需要以下信息:初始化计数器变量的一个起始值;继续循环的条件,即测试值,该测试值应涉及到计数器变量;每次循环结束后,对计数器变量的值通常步长来进行改变。流程控制for(初始值;测试值;步长){……//代码行或代码块}流程控制【例3-7】一张单据上有一个5位数的号码为6**42,其中百位数和千位数已模糊不清,但知道该数能被57和67除尽。设计一个算法,找出该单据所有可能的号码。【例3-7】程序代码无限循环当由于编写代码错误或程序逻辑错误而定义了永远无法终止的循环时,便成了无限循环,又称为死循环。死循环将长期占用系统资源,并有可能造成系统死机,虽然在一些特殊情况下,使用死循环可以解决某些特定问题,但还是建议用户不要使用。可通过C#提供的循环中断技术来对循环进行更为精细的控制,避免死循环的发生。流程控制inti=1;while(i0){i++;}循环的中断C#提供了4个命令,来控制循环的执行:break——立即终止循环;continue——立即终止当前循环,而进行下一次循环;goto——可以跳出循环,到已经标记好的代码位置上;return——跳出循环及其所包含的函数体。流程控制1.break语句【例3-8】输入一个整数X,如果该数是质数,则显示“是质数.”,如果不是则显示“不是质数.”。要求编写成Windows应用程序:【例3-8】程序代码2.continue流程控制流程控制随机数的产生方法在程序设计中,经常需要产生随机数。在C#中要产生随机数需要使用Random类,该类位于命名空间System中。要使用Random类,应首先生成该类的一个对象。如:RandomrandomObj=newRandom();生成随机数对象后,可以调用随机数对象的Next()方法得到一个随机数。随机数的产生方法该方法的语法格式有如下三种:[格式1]:randomObj.Next()[格式2]randomObj.Next(N)[格式3]:randomObj.Next(N,M)【例3-9】设计一个程序完成这样的功能:产生100个两位随机正整数,求这些数中所有能被3整除的数的和以及所有不能被3整除的数的各位数字和。要求编写成控制台应用程序。【例3-9】程序代码典型实例一:根据长度和面积求矩形的高和宽例:1、使用一根长度为L厘米的铁丝,制作一个面积为S的矩形框,要求计算出满足这种条件的矩形的高h和宽w。典型实例二:百钱买百鸡例2:我国古代数学家在《算经》中出了一道题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡、小鸡各多少?要求编写成控制台应用程序。邮包计费程序例3:假定向国外邮寄包裹收费如下计算:首先,包裹重量四舍五入到最近的15克的倍数,然后按表3-3收费:重量/克收费/元45~59.930~44.915~29.90~14.960~7.947515141295每增加10克,邮费增加1元程序运行界面程序代码例4:一辆卡车违反交通规则,撞死行人,司机畏罪驾车逃跑。当时有三个人目击这一车祸的发生,但都没有看清卡车的牌照号码,只记住牌照号码的部分特征,甲记住牌照号码的前两位数字是相同的,乙记住牌照号码的后两位数字是相同的,丙是一位数学家,他说“车牌号码肯定是四位数,而且恰好是一个整数的平方。”,并且丙已推导出符合该条件的号码只可能有一个。根据这些信息来判定车牌号并捉拿肇事司机。要求编写控制台应用程序。程序代码
本文标题:第03章 流程控制
链接地址:https://www.777doc.com/doc-4001076 .html