C#语言程序设计基础——流程控制第五讲C#的流程控制流程控制的基础条件控制结构ifif/elseif/elseif/elseswitch循环控制结构forforeachwhile、do-while(了解)跳转语句break、continue、return流程控制的基础-说明程序语言撰写的程序代码大部分是一列程序代码接着一列程序代码来循序的执行,但是对于复杂工作,为了达成预期的执行结果,需要使用「流程控制结构」(ControlStructures)来更改执行的流程。流程控制结构是使用条件判断,来决定执行方向或是否继续执行指定的程序区块,换句话说,程序设计者可以使用条件来控制程序码的执行,以便达成程序所需的执行结果。流程控制的基础-种类条件控制:条件控制是一个选择题,可能为单一选择或多选一,依照条件表达式的结果,可以决定执行哪一个区块的程序代码。如同从学校或公司走路回家,因为回家的路不只一条,当走到十字路口时可以决定向左、向右或直走,虽然最终都会到家,但是经过路径长度就不相同。循环控制:循环控制是重复执行区块的程序代码,拥有结束条件,可以结束循环的执行。它有如马路上的圆环,车子可以一直环绕着圆环行走,车子可以随兴跷几圈或决定是否离开圆环,进入圆环是进入循环,离开圆环就是离开循环。流程控制的基础-程序区块程序区块(Blocks)是一种最简单的结构叙述,它的目的只是将零到多列的程序叙述组合成一个群组,所以也称为「结合叙述」(CompoundStatements)。我们可以将整个程序区块视为一列程序叙述,以结构化程序设计来说,程序区块就是最简单的模块,其语法如下所示:{…………程序叙述;…………}条件控制结构if是否选条件叙述if/else二选一条件叙述if/else/if多选一条件叙述switch多选一条件叙述if是否选条件叙述-说明if条件叙述是一种是否执行的单选题,只是决定是否执行程序区块内的程序代码,如果条件表达式的结果为true,就执行之后的程序区块。例如:判断学生成绩是否及格,如下所示:if(score=60){Response.Write(name+成绩及格!);Response.Write(学生成绩:+score+br/);}if是否选条件叙述-流程图falsetrue条件叙述结束score=60条件叙述开始执行程序代码if/else二选一条件叙述-说明如果条件是拥有排它情况的2个程序区块,只能二选一,我们可以加上else关键词。如果if条件为true,就执行else之前的程序区块;false执行else之后的程序区块。例如:使用身高来判断购买全票,还是半票,如下所示:if(length120){Console.WriteLine(name+购买全票!br/);}else{Console.WriteLine(name+购买半票!br/);}if/else二选一条件叙述-流程图条件叙述结束length120条件叙述开始执行程序代码(一)falsetrue执行程序代码(二)if/else/if多选一条件叙述-说明所谓多选一条件叙述,可以依照条件来执行多个不同区块的程序代码。C#语言的多条件叙述有2种写法,如下所示:if/else条件的扩充。switch多选一条件叙述。if/else/if多选一条件叙述-说明if/else/if多选一条件叙述是if/else条件的扩充,只需重复使用if/else条件,就可以建立多选一条件叙述。例如:使用年龄判断搭乘公交车的乘客票价是学生、普通或敬老票,如下所示:if(age=18){str=学生票:12元br;}else{if(age=65){str=敬老票:8元br;}else{str=普通票:15元br;}}if/else/if多选一条件叙述-流程图switch多选一条件叙述-说明1C#语言的另一种多选一条件叙述是switch多条件叙述,它是依照符合的条件执行不同程序区块的程序代码,例如:学生成绩是使用GPA的A、B、C、D来打成绩,我们可以使用switch条件叙述来显示转换的成绩范围,如下所示:switch(grade){case'A':str=超过80分br;break;case'B':str=70~79分br;break;case'C':str=60~69分br;break;default:str=低于60分br;break;}switch多选一条件叙述-流程图switch多选一条件叙述-流程图注意:使用switch语句必须要非常的谨慎1.只能针对基本数据类型使用switch,比如int和string类型。2.case标签后面只能是常量或常量表达式3.case标签必须是唯一性的,不允许多个case使用相同的常量或常量表达式。循环控制结构for循环叙述foreach/in循环叙述前测式while循环叙述后测式do/while循环叙述for循环叙述-说明C#语言的for循环称为「计数循环」(CountingLoop),这是一种简化的while循环,可以重复执行固定次数的程序区块。在for循环预设拥有一个计数器,计数器每次增加或减少一个值,直到for循环的结束条件成立为止,例如:计算1加到15的总和,每次增加1,如下所示:for(i=1;i=15;i++){Console.WriteLine(i+);total+=i;}for循环叙述-流程图for循环叙述-说明课堂练习:(1)1+3+……+99;(2)1+2+4+8+……+128+256;(3)求n!(4)输入一整数A,判断它是否质数。(5)求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。(6)编写一个评分程序,接受用户输入10个该选手的得分(0-10分),然后去掉一个最高分和一个最低分,求出某选手的最后得分(平均分)嵌套循环循环控制结构for嵌套循环while与do/while嵌套循环叙述for嵌套循环for嵌套循环是在for循环中拥有其他for循环,循环如同巢状一般的层层排列,如下所示:for(i=1;i=9;i++){for(j=1;j=9;j++){………}}上述循环共有两层,第一层循环执行9次,第二层循环也执行9次,两层循环共执行81次。for嵌套循环课堂小练习:(1)输出如下图形******打印如下图案:1222(2)找出200到300之间的素数(3)编程计算s=1!+2!+3!+...+10!(4)输出九九乘法表for嵌套循环课堂小练习:(5)“百钱买百鸡”是我国古代的著名数学题。题目这样描述:3文钱可以买1只公鸡,2文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?与之相似,有鸡兔同笼问题。for嵌套循环自己试一试:某动物饲养中心用1700元专款购买小狗(每只31元)和小猫(每只21元)两种小动物。要求专款专用,正好用完,应当如何购买?请输出所有方案。for嵌套循环课堂小练习:(6)宰相的麦子:相传古印度宰相达依尔,是国际象棋的发明者。有一次,国王因为他的贡献要奖励他,问他想要什么。达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,……,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。”国王一想,这还不容易,刚想答应,如果你这时在国王旁边站着,你会不会劝国王别答应,为什么?编程求所需麦子的个数(设1立方米麦子约跳出与继续循环break关键词中断循环continue关键词继续循环return关键字break关键词中断循环循环如果尚未到达结束条件,我们可以使用break关键词强迫跳出循环。例如:使用break关键词来结束for循环的执行,如下所示:for(i=1;i=100;i++){total+=i;if(i==j){break;}}break关键词中断循环示例:(1)随即产生数组,直到遇到50为止(2)有一个三位数,它的各位数字之和的11倍恰好等于它自身,请编程求出这个三位数。continue关键词继续循环continue关键词可以马上继续下一次循环的执行,而不执行程序区块位在continue关键词后的程序代码。如果使用在for循环,一样会更新计数器变量。例如:使用continue关键词马上继续下一次while循环的执行,如下所示:while(i100){i+=1;if(i%2==0){continue;}total+=i;}continue语句练习:设计一个猜数游戏,由计算机随机出一个1到100以内的整数,让你猜。如果你猜的数大了,计算机要有提示,并将猜数范围上限定在你刚才猜的数上,如果你猜小了,计算机有提示,并将猜数范围下限定在你刚才猜的数上,……,最后当你猜中后,计算机输出你猜的次数。总结流程控制的基础条件控制结构ifif/elseif/elseif/elseswitch循环控制结构forforeachwhile、do-while(了解)跳转语句break、continue、return