C#程序设计教程(第2版)-第4章-结构化程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第4章结构化程序设计内容提要:结构化程序的三种基本结构算法、流程图、if语句、分支语句循环语句、跳转语句异常处理的概念try/catch语句、throw语句和finally语句目的要求:理解算法的概念掌握if语句、switch分支语句、循环语句和异常处理语句的含义重点难点:if语句、循环语句和异常处理语句4.1结构化程序设计的概念4.1.1结构化程序设计的概念及算法的概念结构化程序设计方法,是比较广泛使用的程序设计方法。用这种方法编制的程序具有结构清晰,可读性强,易查错等特点。结构化程序设计有三种基本结构,即:顺序结构、选择结构、循环结构。每种基本结构可以包含若干条语句。程序设计的主要步骤:(1)分析问题。(2)确定算法。(3)画出程序流程图。(4)编写程序。(5)调试程序。(6)建立健全的文档资料。最关键的是第2个步骤,即“算法设计”。所谓“算法”,粗略地讲,是为解决一个特定问题而采取的确定的有限的步骤。4.1.2流程图流程图(Flowchart),亦称框图,它是用一些几何框图、流向线和文字说明表示各种类型的操作。计算机算法可以用流程图来表示。4.2顺序结构4.2.1顺序结构的概念:有些简单的程序是按程序语句的编写顺序依次执行的,这种结构称为顺序结构。例:编写程序计算圆的周长和面积。usingSystem;classCircle{staticvoidMain(){constdoublePI=3.141;doubleR,L,S;Console.Write(请输入圆的半径值:);R=double.Parse(Console.ReadLine());L=2*PI*R;S=PI*R*R;Console.WriteLine(圆的周长为:{0},L);Console.WriteLine(圆的面积为:{0},S);}}4.2.2顺序结构的实例Parse()方法:主要用于将数字的字符串表示形式转换为它的等效的其他基本数字类型。例:strings=“18”;inta=int.Parse(s)-10;//a=8intb=a+int.Parse(Console.ReadLine());练习:1.下列程序运行后,输出的结果是()。doublex=17.9;inty=3;y=(int)x%5;Console.WriteLine(y);2.若x=10,y=20,z=0,则表达式“((m=(xy)?x:y)z)?m:z”的值为()。4.3选择结构4.3.1选择结构的概念选择结构,是一种常用的主要基本结构,是计算机根据所给定选择条件为真与否,而决定从各实际可能的不同操作分支中执行某一分支的相应操作。4.3.2条件语句1.if语句语法形式:if(表达式){语句;}说明:如果表达式的值为true,则执行后面if语句所控制的语句;如果表达式的值为false,则不执行if语句控制的语句,而直接跳转执行后面的语句。注意:如果if语句块中只有一条语句,则大括号“{}”可以省略。编程:计算下面公式中的b的值。2a+1(a≤100)b=a(a>100)usingSystem;classvalue{staticvoidMain(){Console.Write(请输入a的值:);inta=int.Parse(Console.ReadLine());intb=a;if(a=100){b=2*a+1;}Console.WriteLine(b={0},b);}}编程:输入三个数,将它们从大到小排序inta,b,c,t=0;Console.Write(“请输入第一个数:”);a=int.Parse(Console.ReadLine());Console.Write(“请输入第二个数:”);b=int.Parse(Console.ReadLine());Console.Write(“请输入第三个数:”);c=int.Parse(Console.ReadLine());if(ab)//本条件语句实现a=b{t=a;a=b;b=t;}if(ac)//本条件语句实现a=c{t=a;a=c;c=t;}if(bc)//本条件语句实现b=c{t=b;b=c;c=t;}Console.WriteLine(“排序结果为:{0},{1},{2}”,a,b,c);2.if…else语句语法:if(表达式){语句块1;}else{语句块2;}说明:如果表达式的值为true,则执行if语句所控制的语句块1;如果表达式的值为false,则执行else语句所控制的语句块2。例:输入一个数,对该数进行四舍五入。usingSystem;classValue{staticvoidMain(){Console.WriteLine(“请输入a的值:”);doublea=double.Parse(Console.ReadLine());intb;if(a-(int)a=0.5){b=(int)a+1;}else{b=(int)a;}Console.WriteLine({0}进行四舍五入后的值为:{1},a,b);}}在if…else语句中可以嵌套使用多层if…else语句,如:if(表达式1)if(表达式2)if(表达式3)……语句1;else语句2;else语句3;else语句4;在使用这种结构时,要注意else和if的配对关系,其原则是:从第1个else开始,一个else总和它上面离它最近的可配对的if配对。例:inta=int.Parse(Console.ReadLine());if(a0){if(a20)a=2*a;if(a100)a=a-50;elsea=a+10;//这个else与if(a100)相配}elsea=-a;//这个else与if(a0)相配Console.WriteLine(“a=”,a);练习:1.若intm,n,r;则以下正确的是()A.if(mn)r--;B.if(m==n)r--;C.if(!m)r--;D.if(m=n)r--;2.程序改错。if(x=1)y+=5;else;y+=10;[思考与练习]1.为铁路编写计算运费的程序。假设铁路托运行李,规定每张客票托运费的计算方法是:行李重量不超过50kg时,每千克0.25元;超过50kg而不超过100kg时,其超过部分每千克0.35元;超过100kg时,其超过部分每千克0.45元。(编写完整的程序,上机实现)分析:托运费的分段函数是什么?答:设行李重量为w公斤,应付托运费为x元,则托运费的分段函数是:(1)w=50时,x=0.25*w(2)50w=100时,x=0.25*50+0.35*(w-50)(3)w100时,x=0.25*50+0.35*50+0.45*(w-100)doublew,x=0;Console.Write(“请输入重量”);w=double.Parse(Console.ReadLine())if(w=50)x=0.25*wif(w50&&w=100)x=0.25*50+0.35*(w-50);if(w100)x=0.25*50+0.35*50+0.45*(w-100)Console.WriteLine(“运费为{0}”,x);//不能写成:50w=1003.elseif语句elseif语句是if语句和if…else语句的组合,其一般形式如下:if(表达式1)语句1;elseif(表达式2)语句2;……elseif(表达式n-1)语句n-1;else语句n;例:编写一个实现如下函数值的程序-1,x0f(x)=0,x=01,x0usingSystem;classTest{staticvoidMain(){Console.Write(“请输入x的值:);doublex=double.Parse(Console.ReadLine());inty;if(x0)y=1;elseif(x==0)y=0;elsey=-1;Console.WrteLine(“Y={0}“,y);}}4.3.3分支语句格式:switch(表达式){case常量表达式1:语句1;break;case常量表达式2:语句2;break;……[default:语句n;break;]}注意:C#要求每个case后使用break语句或跳转语句goto。所有常量表达式的值不能相同。编程:查询学生姓名,输入一个字符,如输入“k”时,显示Kate;输入“m”时,显示Mary;输入“r”时,显示Rose;输入“T”时,显示Tom;输入其他字符时,显示OtherStudents。Console.Write(“Enteracharacter:);charName=(char)Console.Read();switch(Name){case'k':Console.WriteLine(Kate.);break;case'm':Console.WriteLine(Mary.);break;case'r':Console.WriteLine(Rose.);break;case'T':Console.WriteLine(Tom.);break;default:Console.WriteLine(Otherstudents.);break;}例:usingSystem;classDemo{publicstaticvoidMain(){Console.Write(enteri=);inti=int.Parse(Console.ReadLine());switch(i){case1:case2:case3:Console.WriteLine(“iis1,2or3.);break;case4:Console.WriteLine(iis4.);break;}}}注意:在C#中,两个或更多的case语句可以共用同一程序代码:[思考与练习]1.以下程序运行时,输出结果是什么?inty=1,x;if(y!=0)x=5;elseify0x=4;elsex=3;Console.WriteLine(x={0}“,x);x=34.4循环结构循环是指在指定的条件下多次重复执行一组语句。被重复执行的一组语句称为循环体。采用循环结构可以解决一些按一定规则重复执行的问题。例如,统计一个班几十名学生,甚至全校几千名学生的学期成绩,如求平均分、不及格人数等。4.4.1循环结构的概念循环结构按其循环体是否嵌套从属的子循环结构,可分为单循环结构和多重循环结构。4.4.2while语句和do—while语句1.while语句语法格式:while(条件表达式){循环体}usingSystem;classSumw{staticvoidMain(){intn=1;while(n6){Console.WriteLine(“n={0}”,n);n++;}}}例:写出下列程序的运行结果。结果:例:使用while语句,编程计算1+2+…+1000。usingSystem;classSumw{staticvoidMain(){inti=1,sum=0;while(i=1000){sum+=i;i++;}Console.WriteLine(“1+2+…+1000={0}”,sum);}}[思考与练习](1)如果要实现sum=1+2+3+…+10,怎样修改程序?(2)如果要实现sum=30+31+32+…+50,怎样修改程序?while(i=10)inti=30;While(i=50)usingSystem;classValue{staticvoidMain(){inti=10;longx=1;while(i0){x*=i;i--;}Console.WriteLine(“10!={0}”,x);}}例:使用while语句,编程计算10的阶乘值。1.下列程序所计算的数学式是()inta=0,i=2;while(i100){a+=i;i+=2;}A.a=1+2+4+…+98B.a=1+2+4+…+100C.a=2+4+6+…+98D.a=2+4+6+…+100练习

1 / 74
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功