C#程序设计项目化教程课件ch04_第1页
C#程序设计项目化教程课件ch04_第2页
C#程序设计项目化教程课件ch04_第3页
C#程序设计项目化教程课件ch04_第4页
C#程序设计项目化教程课件ch04_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元4使用方法、数组与String类单元4使用方法、数组与String类4.2技术与知识准备4.2.1方法在C语言中,我们自己写过方法,那么使用方法有什么好处呢?方法是类的一种行为,方法会使我们的代码容易修改、方便阅读、实现封装和重用。比如我们以前用过好多.NET定义好的类的方法,例如:Console.ReadLine(),ReadLine()就是系统定义好的方法。除了使用.NET提供的类的方法,我们也可以自己来定义方法。

单元4使用方法、数组与String类

定义方法方法定义:访问修饰符<返回类型>方法名([<参数列表>]){[<语句组>][<return>[<表达式>];]}说明:1.什么是访问修饰符呢?就是可访问的级别,public是公共的,private是私有的。在程序中,如果将方法声明为public,就表示可以在其他类中使用,如果声明为private,那么就只能在该类中使用。2.返回类型是必选项,它指定了方法返回值的数据类型,可以指定为任何的数据类型,如int、double等。如果方法没有返回值,那么必须使用void关键字来指定。3.方法名为方法的名称,它的取名遵循C#的合法标识符规则,并且方法的命名应当采用Pascal风格,就是组成方法名的单词直接相连,每个单词的首字母大写,例如ReadLine()。4.参数列表是可选的,在调用方法时,它用来给方法传递信息。声明方法时,如果有参数,则必须写在方法名后面的小括号中,并且必须指定它的类型和名称;若有多个参数,需要用逗号(,)隔开,例如:”intn1,intn2”,声明方法时的参数,称为形式参数,简称形参。5.语句组即方法体,是调用方法时执行的代码块。它是可选项,但一般都会有方法体。6.return为可选项,用于给方法返回一个指定数据类型的值。单元4使用方法、数组与String类

向方法中传递参数1.值传递我们要定义一个方法来计算累加,方法的名字取名为Fact,我们将n的值作为方法的参数传入,将计算结果作为方法的返回值,修改代码如下。staticvoidMain(string[]args){Console.WriteLine("inputnumber:");intt;t=int.Parse(Console.ReadLine());Console.WriteLine("sum="+Fact(t));}privatestaticlongFact(intn){longsum=0;for(inti=1;i<=n;i++)sum=sum+i;图4.2运行结果

returnsum;}单元4使用方法、数组与String类2.按引用传递参数

除了上面的值传递参数外,我们还可以按引用传递参数,这样可以在方法调用之后,仍然保留对参数值的修改。按引用传递参数,需要ref关键字修饰参数,代码如下。classProgram{staticvoidMain(string[]args){Console.Write("inputn=");intn=int.Parse(Console.ReadLine());Add(refn);Console.WriteLine("n="+n);}privatestaticvoidAdd(refintn){n=n+10;}单元4使用方法、数组与String类1.声明语法数据类型[]数组名;例如:int[]a;2.指定数组大小要使用new关键字指定大小例如:int[]a;a=newint[5];可合并两步为:int[]a=newint[5];3.初始化方法一:int[]a=newint[5]{1,2,3,4,5};方法二:int[]a=newint[]{1,2,3,4,5};方法三:int[]a={1,2,3,4,5};4.2.3数组单元4使用方法、数组与String类一般形式:foreach(<数据类型><循环变量>in<数组>){循环体}说明:1.<数据类型>是与数组的元素相匹配的数据类型。2.<循环变量>是一个普通的变量,一般用来表示数组中的元素例如:int[]a=newint[5]{1,2,3,4,5};intf=1;foreach(intiina)f=f*i;上述代码执行后,f的值为数组中所有元素的积,即120。4.2.4foreach语句单元4使用方法、数组与String类字符串是我们在程序当中非常常用的一种类型,在C#中有一个String类,它位于System命名空间中,属于.NETFramework类库,而我们以前一直在用的string只不过是String类在C#中的一个别名。现在就让我们一起来认识一下强大的String类。我们常常使用格式字符串和参数列表的形式输出数据,如:stringaddress=”江苏苏州”;Console.WriteLine(“我的籍贯是{0}”,address);其中的”我的籍贯是{0}”叫做格式字符串,格式字符串后面的部分叫做格式列表,格式字符串中的{x}叫做占位符。其实,String类提供了一个很强大的Format()方法来格式化字符串。Format()方法允许把字符串、数字或布尔类型的变量插入到格式字符串中,它的语法如下:stringstr=string.Format(“格式字符串”,参数列表);例如:stringstr=string.Format(“{0}+{1}={2}”,2,3,2+3);其中,“{0}+{1}={2}”就是一个格式字符串,{0}、{1}、{2}分别对应于后面的2、3、2+3,占位符中的数字0、1、2分别对应于参数列表中的第1、2、3个参数,这条语句的运行结果为:2+3=5。4.2.5C#中的String类单元4使用方法、数组与String类排序采用的是冒泡排序法。假定有一组数据:8,3,5,1,9,6,它们第一轮冒泡排序的过程如图4.5所示,你能看出排序的规律吗?4.2.6冒泡排序如图4.5所示,你能看出排序的规律吗?最大值到最后。冒泡排序就是从第一个元素开始,用它和它紧挨着的后一个元素比较,如果后面的元素小于前面的元素,就交换它们,否则保持原样,然后转移到后一个位置,重复以上过程,最后,最大的元素已经定位,即最后位置。单元4使用方法、数组与String类第二轮比较如图4.6所示。4.2.6冒泡排序第二轮下来,大家发现什么规律了吗?次大值到最后第二的位置,并且第二轮的比较次数比上一轮减少了一次。依次类推,最终完成排序任务。单元4使用方法、数组与String类通过对以上小节内容的学习,我们了解了方法的定义、值传递、引用传递以及数组的定义使用等,现在是时候回到我们4.1节工作场景的任务中来了。分析:分别定义数组的输入、输出、排序、求平均值、求最大值最小值五个方法。其中前三个方法无返回值,第四个方法返回值为平均值,第五个方法有两个返回值,但只能运用一个return语句,所以用return语句返回最大值,最小值采用引用传递。4.3回到工作场景1.输入方法代码如下。privatestaticvoidInputSZ(int[]a1){for(inti=0;i<a1.Length;i++){intx=int.Parse(Console.ReadLine());a1[i]=x;}}说明:a1.Length求出数组a1的长度,即数组的元素个数。

单元4使用方法、数组与String类4.3回到工作场景2.输出方法代码如下。privatestaticvoidOutputSZ(int[]a){for(inti=0;i<a.Length;i++){Console.Write(a[i]+"");}Console.WriteLine();}3.排序方法代码如下。privatestaticvoidSort(int[]a2){inttemp;for(inti=0;i<a2.Length-1;i++){for(intj=0;j<a2.Length-i-1;j++)if(a2[j]>a2[j+1]){temp=a2[j];a2[j]=a2[j+1];a2[j+1]=temp;

}}}单元4使用方法、数组与String类4.3回到工作场景4.求平均值方法代码如下。privatestaticdoubleAvg(int[]a){intsum=0;foreach(intiina)sum=sum+i;doubleaverage=(1.0*sum)/a.Length;returnaverage;}说明:求平均值用总成绩除以数组的长度,为什么要乘以1.0呢?因为在C#中,整数除以整数,结果为整数,例如:100/21=4,与实际结果4.76相差甚远,1.0*sum结果是实数,实数/整数,结果也为实数。单元4使用方法、数组与String类4.3回到工作场景5.求最大值最小值方法如下。privatestaticintMaxMin(int[]a,refintmin){intmax=0;for(inti=0;i<a.Length;i++){if(max<a[i])max=a[i];if(min>a[i])min=a[i];}returnmax;}说明:因为要返回两个值(最大值和最小值),而只能运用一个return,因此最大值是通过return语句返回到主函数中,而最小值是通过引用传递将值传递到主函数中。单元4使用方法、数组与String类4.3回到工作场景6.主体函数staticvoidMain(string[]args){int[]a=newint[10];Console.WriteLine("pleaseinput10numbers:");InputSZ(a);Console.WriteLine("oriented:");OutputSZ(a);Sort(a);Console.WriteLine("aftersorted:");OutputSZ(a);intmin=a[0];intmax=MaxMin(a,refmin);doubleavg=Avg(a);Console.WriteLine("max={0},min={1},avg={2}",max,min,avg);}说明:引用传递的话,形参和实参前一定都要加上ref关键字,否则编译出错。单元4使用方法、数组与String类4.4工作训练营4.4.1项目训练1、训练内容小陈去一软件公司面试,主管要求小陈设计一个“数据排序”的程序项目,使用组数实现数据从大到小排序,例如:一组数据:52976,输出后是976522、训练目的掌握数组的初始化及冒泡排序法。3、训练过程仔细理清题目要求,选择合适的初始化方法,设计出程序的答题步骤和具体的代码处理过程,最后编写出完整的C#语言源程序。分析:根据题目要求理清处理步骤单元4使用方法、数组与String类【步骤1】数组的初始化【步骤2】冒泡排序法:定义方法Sort,无返回值【步骤3】数组的输出:定义方法OutPutSZ,无返回值单元4使用方法、数组与String类【关键代码】staticvoidMain(string[]args){int[]a=newint[5]{5,2,9,7,6};Console.WriteLine("yuanshuzuwei:");OutPutSZ(a);Sort(a);Console.WriteLine("paixuhoushuzuwei:");OutPutSZ(a);}privatestaticvoidSort(int[]a1){inttemp=0;for(inti=0;i<a1.Length;i++)for(intj=0;j<a1.Length-1-i;j++)if(a1[j]<a1[j+1]){temp=a1[j];a1[j]=a1[j+1];a1[j+1]=temp;}}privatestaticvoidOutPutSZ(int[]a2){foreach(intiina2)Console.Write(i+"");Console.WriteLine();}}单元4使用方法、数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论