1、第3章 结构化程序设计语句,本章要点: if语句的作用及其使用 switch语句的作用及其使用 while、dowhile和for等循环语句的作用及其使用 continue和break语句的作用及其使用 随机数的产生方法,3.1 循序渐进学理论,3.1.1 if语句 1用if语句实现单分支选择结构格式:if (表达式) 语句;,图3-1 单分支选择结构执行流程图,说明: 语句中的表达式通常用来表示条件,应为关系表达式或逻辑表达式; 若满足条件要执行多条语句,应用把他们括起来,称为一个语句块; (表达式)括号不能省略;,【例3-1】 编写一个程序实现如下功能:输入一个成绩,如果成绩大于等于60则
2、输出“恭喜您,您通过了这次考试!”,否则不输出任何信息。要求编写成控制台应用程序。,2用if语句实现双分支选择结构,格式:if (表达式) 语句1; else 语句2;,图3-2 双分支选择结构执行流程图,【例3-2】 编写一个程序实现如下功能:输入一个成绩,如果成绩大于等于60则输出“恭喜您,您通过了这次考试!”,否则输出“对不起,准备补考吧!”。要求编写成Windows应用程序,程序的设计界面如图3-3所示,程序的运行界面如图3-4所示。,图3-3 程序设计界面,图3-4 程序运行界面,3用if语句实现多分支选择结构,格式:if (表达式1) 语句1;else if(表达式2)语句2;el
3、se if(表达式3)语句3;else 语句n;,【例3-3】 编写一个求成绩等级的程序。要求输入一个学生的考试成绩,输出其分数和对应的等级。共分五个等级:小于60分的为“E”;6069分为“D”;7079分为“C”;8089分为“B”;90分以上为“A”。要求编写成控制台应用程序。,3.1.2 switch语句,格式:【规整,容易理解】 switch(表达式)case 常量表达式1: 语句1;break;case 常量表达式2: 语句2;break; case 常量表达式n: 语句n;break;default: 语句n+1;break;功能:根据“表达式”的值的不同,决定执行不同的分支;,
4、switch语句执行流程图,说明: Switch后面括号中表达式通常是一个整型或者字符型表达式; C#的switch语句只能在几个case中选择相等的情况,而不能选择一个范围,如果需要进行范围判断,需使用ifelse结构。两者是互为补充的。 如果某个分支有多条语句,可以用大括号括起来,也可以不加大括号。因为进入某个case分支后,程序会自动顺序执行本分支后面的所有可执行的语句; C#不支持从一个case标签显示贯穿到另一个case标签,(c+可以贯穿执行),若要实现贯穿执行,使用goto语句:break不可以省略,否则会出现错误,这一点和c、c+不同;,【例3-4】 用switch语句重写例3
5、-3。要求编写成Windows应用程序。程序的设计界面如图3-6所示,程序的运行界面如图3-7所示。,图3-6 程序设计界面,图3-7 程序运行界面,3.1.3 while循环语句,格式:while (表达式)语句;(即循环体部分),while语句执行流程,说明: 循环体内如果包含一条以上的语句,应该用大括号括起来,作为复合语句; 通常进入循环时,括号内部的表达式为true,但是循环最终都要退出,因此在循环体内部应有使循环趋于结束的语句,即能够使表达式的值有true变为false的语句; 当循环又称“允许0次循环”;,【例3-5】编程求下式的值(要求编写成控制台应用程序):,3.1.4 dow
6、hile循环语句,格式:do 语句; while (表达式);,dowhile语句的执行流程,说明: 先执行,后判断表达式,“不允许0次循环”; 若dowhile循环体部分由多个语句组成,必须用大括号括起来;,【例3-6】 编一个程序按下列公式求e的值(要求精度达到1e-6)。,3.1.5 for循环语句,格式:for(表达式1;表达式2;表达式3)语句;,图3-10 for语句的执行流程,【例3-7】 一张单据上有一个5位数的号码为6*42,其中百位数和千位数已模糊不清,但知道该数能被57和67除尽。设计一个算法,找出该单据所有可能的号码。,3.1.6 break和continue语句,1b
7、reak语句 格式:break;,带有break语句的执行流程,说明: Break语句只可以用于switch语句和循环语句; 一般在循环体中并不直接使用break语句,而是和一个if语句配合使用,在循环体中测试某个条件是否满足,若满足则执行break语句退出循环; 在嵌套循环中,break只能终止一层循环;,【例3-8】 输入一个整数X,如果该数是素数,则显示“是素数.”,如果不是则显示“不是素数.”。要求编写成Windows应用程序,程序的设计界面如图3-12所示,程序的运行界面如图3-13所示。,图3-12 程序设计界面,图3-13 程序运行界面,2continue语句,格式:contin
8、ue;,含有continue语句循环的一般执行流程,功能:让循环提前进入下一次,接着再一次进行循环条件判断,以便执行下一次循环; 说明: 执行continue语句并没有使整个循环终止,只是结束本次循环; 一般在循环体内部不直接使用continue语句,而是和一个if语句配合使用,在循环体中测试某个条件是否满足,若满足则执行continue语句退出本次循环,以便开始下一次循环; 在while和dowhile循环中,continue语句使得流程直接跳到循环控制条件的测试部分,然后决定循环是否继续进行;而在for循环中,遇到continue后,跳过循环体中余下的句子,计算“表达式3”,然后再计算“表
9、达式2”,以决定是否开始下一次循环;,3.1.7 随机数的产生方法,格式1:randomObj.Next() 格式2:randomObj.Next(N) 例如,有下列语句: Random randomObj=new Random(); i=randomObj.Next(10); 其作用是产生一个09之间的随机整数并赋值给变量i。 格式3:randomObj.Next(N,M) 例如,有下列语句: Random randomObj=new Random(); i=randomObj.Next(5,10); 其作用是产生一个59之间的随机整数并赋值给变量i。,【例3-9】 设计一个程序完成这样的功
10、能:产生100个两位随机正整数,求这些数中所有能被3整除的数的和以及所有不能被3整除的数的各位数字和。要求编写成控制台应用程序。,3.2 典型实例练能力,3.2.1 典型实例一:根据长度和面积求矩形的高和宽 【实例题目】使用一根长度为L厘米的铁丝,制作一个面积为S的矩形框,要求计算出满足这种条件的矩形的高h和宽w。,3.2.2 典型实例二:百钱买百鸡,【实例题目】我国古代数学家在算经中出了一道题:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”意为:公鸡每只5元,母鸡每只3元,小鸡3只1元。用100元买100只鸡,问公鸡、母鸡、小鸡各多少?要求编写成控制台
11、应用程序。,3.3 上机练习重应用,3.3.1 上机练习一:邮包计费程序 【练习题目】 假定向国外邮寄包裹收费如下计算:首先,包裹重量四舍五入到最近的15克的倍数,然后按表3-3收费:,图3-15 程序设计界面,图3-16 程序运行界面,3.3.2 上机练习二:捉拿肇事司机,【练习题目】一辆卡车违反交通规则,撞死行人,司机畏罪驾车逃跑。当时有三个人目击这一车祸的发生,但都没有看清卡车的牌照号码,只记住牌照号码的部分特征,甲记住牌照号码的前两位数字是相同的,乙记住牌照号码的后两位数字是相同的,丙是一位数学家,他说“车牌号码肯定是四位数,而且恰好是一个整数的平方。”,并且丙已推导出符合该条件的号码只可能有一个。根据这些信息来判定车牌号并捉拿肇事司机。要求编写控制台应用程序。,【执行结果】,