C语言程序设计实验报告.doc

上传人:夺命阿水 文档编号:21189 上传时间:2022-07-11 格式:DOC 页数:18 大小:234KB
返回 下载 相关 举报
C语言程序设计实验报告.doc_第1页
第1页 / 共18页
C语言程序设计实验报告.doc_第2页
第2页 / 共18页
C语言程序设计实验报告.doc_第3页
第3页 / 共18页
C语言程序设计实验报告.doc_第4页
第4页 / 共18页
C语言程序设计实验报告.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《C语言程序设计实验报告.doc》由会员分享,可在线阅读,更多相关《C语言程序设计实验报告.doc(18页珍藏版)》请在课桌文档上搜索。

1、wordC#语言程序设计实 验 报 告实验一 简单编程练习一、目的与要求1、熟悉集成开发环境(IDE)2、熟悉C#源程序语言的编辑、编译和运行过程3、能够创建、编译和执行一个简单的C#程序二、实验仪器Windows操作系统,Microsoft Visual Studio .NET 2010。三、实验内容1.开发一个简单的控制台应用程序,该程序完成一段字符的输入,然后输出该字符串。2.开发一个简单的Windows应用程序,该程序通过鼠标单击按钮在文本框中显示一行字符串。四、实验过程与结果 1启动.NET 2010。 2在“文件菜单上找到“新建-“项目,打开“新建项目对话框。 3在模板一栏选择“控

2、制台应用程序,在名称一栏输入项目的名称。 4位置一栏内指定的是项目存放的目录,可以更改为自己定制的目录,也可以使用系统提供的默认路径。 5按确定以后用下面的代码替换Program.cs已有的所有代码:using System;namespace TestConsole class Program static void Main() string str; System.Console.WriteLine(Please input a string !); str = System.Console.ReadLine(); System.Console.WriteLine(str); 6运行应用

3、程序(ctrl + F5)。1新建项目,选择Windows应用程序,输入名称为:TestWindows。2在主窗体上放置一个TextBox和一个Button。3选中TextBox,展开它的属性面板单击鼠标右键,选择属性,将它的Name属性设置为txtContent,Text属性设置为空。4选中Button,展开它的属性面板,将它的Name属性设置为btnType,Text属性设置为“显示。5在窗体上鼠标双击按钮,在生成的事件处理方法内添加如下的代码:txtContent.Text = hello!;6运行应用程序(ctrl + F5)。五、实验总结C#较其他语言比如Java,在可视化界面方面更

4、方便。采用拖拽式的界面设计操作,对新手来说更好入门。除了界面其他方面和其他语言还有一定区别。1、必须借助 .NET Framework类库实现2、必须定义类3、类的代码主要由方法组成4、C#程序中的方法的结构由头部和方法体构成5、C#程序的输入与输出操做:需要借助Console的类方法(ReadLine、WriteLine)实验二 控制结构编程练习一、目的与要求1、掌握分支结构语句的语法书写格式2、掌握循环结构语句的语法书写格式3、综合利用各种结构语句完成特定的任务二、实验仪器Windows操作系统,Microsoft Visual Studio .NET 2010。三、实验内容1. 开发一个

5、简单的控制台应用程序,求1!+2!+3!+10!。2. 开发一个简单的控制台应用程序,该程序完成一个一维数组排序编程,然后输出该数组。四、实验过程与结果1. 1!+2!+3!+10! 1启动.NET 2010。 2在“文件菜单上找到“新建-“项目,打开“新建项目对话框。 3在模板一栏选择“控制台应用程序,在名称一栏输入项目的名称。4按确定以后用下面的代码替换Program.cs已有的所有代码:using System;class Ex2public static void Main()int i,k,m=1,sum=0;for (i=1;i=10;i+)for(k=1;k“项目,打开“新建项目

6、对话框。3在模板一栏选择“控制台应用程序,在名称一栏输入项目的名称。4按确定以后用下面的代码替换Program.cs已有的所有代码:using System;namespace shuzuclass maopopublic static void Main()int a=new int10;Console.WriteLine(请输入10个整数);for(int i=0;i10;i+)Console.Write(第0个数:,i+1);ai=Int32.Parse(Console.ReadLine();Console.WriteLine(排序前的十个数是:);for(int i=0;i10;i+)

7、Console.Write(0t,ai);Console.WriteLine();int temp;/临时变量for(int j=0;j 9;j+)for(int i=0;iai+1)temp=ai; ai=ai+1;ai+1=temp;for (int i=0;i10;i+)Console.WriteLine(排序后的结果是:);Console.Write(0t,ai);Console.WriteLine();5运行应用程序(ctrl + F5)。五、实验总结循环就是重复执行一些语句。这个技术使用起来非常方便,因为可以对操作重复任意屡次,而无需每次都编写一样的代码。while循环非常类似于d

8、o循环,但有一个重要的区别:while语句中的布尔测试是在循环开始时进展,而不是最后。如果测试结果为false,循环代码将不会被执行,而直接执行循环后面的代码。分支是控制下一步要执行哪些代码的过程。要跳转的代码是由某个条件语句来控制的,这个条件语句使用布尔逻辑,对测试值和一个或多个可能的值进展比拟。 C#中的分支结构有以下三种: 1、三元运算 其语法如下: ?:2、if语句 其最简单语法: if() ; 当然也可以将else语句和if语句合并使用,指定其他的代码。如果的结果为false时就执行else语句。其语法结构如下: if() else 3、我们知道当进展的比拟少的情况下用if与else

9、语句是很方便的,但是如果我们进展很多的比拟时,就应该考虑使用另一种分支结构:switch语句。实验三 类设计练习一、目的与要求1、掌握C#语言定义类的方法。2、掌握派生类的设计方法。3、理解运行时多态的含义。二、实验仪器Windows操作系统,Microsoft Visual Studio .NET 2010。三、实验内容1. 依次定义Rectangle, Circle, Cylinder三个类,Circle类继承于Rectangular,Cylinder继承于Circle。在Rectangle类中需要定义属性,虚拟的Area()方法,虚拟的Name属性,重写ToString()方法;在Cir

10、cle类中需要定义属性,重写Area()方法,重写Name属性,重写ToString()方法,定义周长方法。在Cylinder类中要定义Volume方法,重写Area,ToString方法,Name属性。 定义一个Test类,参加主方法,在主方法中分别定义三个类的对象和实例;定义Rectangle类的对象数组,将数组元素分别引用到刚定义的三个实例上,然后通过基类对象调用重写的方法。四、实验过程与结果 1启动.NET 2010。 2在“文件菜单上找到“新建-“项目,打开“新建项目对话框。 3在模板一栏选择“控制台应用程序,在名称一栏输入项目的名称。using System;using Syste

11、m.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2 public class Rectangle public const double pi = Math.PI; private int x, y; private double width, height; public Rectangle(int x, int y, double width, double height) this.x = x; this.y = y; this.width = width; thi

12、s.height = height; public int Y get return y; set y = value; public int X get return x; set x = value; public double Height get return height; set height = value; public double Width get return width; set width = value; public virtual double Area()/定义虚拟方法 return height * width; public virtual string

13、 Name /虚拟属性 get return 矩形; public override string ToString() return (左上角坐标 + ( + X + , + Y + ) + 宽 + width + 高 + height); using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2 public class Circle : Rectangle private int xValue, yValue; privat

14、e double radius; public Circle(int x, int y, double r) : base(x - (int)r, y - (int)r, 2 * r, 2 * r) this.xValue=x; this.yValue=y; this.radius=r; public int YValue/圆心坐标 get return yValue; set yValue = value; public int XValue get return xValue; set xValue = value; public double Radius get return radi

15、us; set radius = value; public double Diameter/直径 get return Width; public double Circumference() return 2*pi*radius; public override double Area() /重写虚拟方法 return pi * radius * radius; public override string Name/重写虚拟属性 get return 圆; public override string ToString() return (圆心: + ( + xValue + , + y

16、Value + ) + 半径 + Radius); using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2 class Cylinder : Circle private double h; public Cylinder(int x, int y, double r, double h) : base(x, y, r) H = h; public double H get return h; set h = value; pu

17、blic override double Area() return pi * Radius * Radius; public double Volume() return base.Area() * H; public override string Name get return 圆柱; public override string ToString() return base.ToString() + 高 + H; using System;using System.Collections.Generic;using System.Linq;using System.Text;names

18、pace ConsoleApplication2 public class Test public static string ShowArea(Rectangle Items) string output = ; foreach (Rectangle Item in Items) output += n + Item.Name + : + Item.ToString() + 面积 + Item.Area(); return output; public static void Main() Rectangle rectangle1 = new Rectangle(0, 0, 35.2, 10

19、0); Circle circle1 = new Circle(10, 8, 10); Cylinder Cylinder1 = new Cylinder(12, 6, 10.35, 25.6); Rectangle shape = new Rectangle3; shape0 = rectangle1; shape1 = circle1; shape2 = Cylinder1; string output = ShowArea(shape); output += 体积 + Cylinder1.Volume(); Console.WriteLine(output, 运行结果); 4运行应用程序

20、(ctrl + F5)。五、实验总结类的定义是以关键字class开始,后跟类的名称。类的主体,包含在一对花括号内。虚方法特点总结:1,在父类中把需要设置为虚方法的方法前加virtual标记;2,虚方法在父类中必须有实现,哪怕是空实现3,子类继承父类后,可以选择对虚方法进展重写也可以选择不进展重写;4,当子类重写父类方法的时候,必须保证重写后的方法和原方法的访问修饰符,返回值类型,方法名,参数列表完全一致;5,当方法的标记是virtual和override的时候都可以重写。*实现继承:表示一个类型派生于基类型,它拥有该基类型的所有成员字段和函数。在实现继承中,派生类型采用基类型的每个函数的实现代

21、码,除非在派生类型的定义中指定某个函数的实现代码。在需要给现有的类型添加功能,或许多相关的类型共享一组重要的公共功能时,可以使用这种类型的继承。*接口继承:表示一个类型只继承了函数的签名,没有继承任何的代码。在需要指定该类型具有某些可用的特性时,最好使用这种类型的继承。C#不支持多重继承,但C#允许类型派生自多个接口多重接口继承。这说明,C#类可以派生自另一个类和任意多个接口。更准确的说,因为System.Object是一个公共的基类,所以每个C#除Object之外都有一个基类,还可以有任意多个接口。使用结构的一个限制是结构不支持实现继承,但每个结构都自动派生自System.ValueType

22、。不能编码实现类型层次的结构,但结构可以实现接口。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。换句话说,实际上就是同一个类型的实例调用“一样的方法,产生的结果是不同的。这里的“一样打上双引号是因为这里的一样的方法仅仅是看上去一样的方法,实际上它们调用的方法是不同的。实验四 委托事件处理编程一、目的与要求1.掌握代理的定义,代理的实例化和代理的调用。2.掌握代理的本质。3.掌握事件代理的定义,事件的定义,事件的触发以与实例化事件代理和事件处理方法的实现。4.了解事件参数类的定义和使用方法。二、实验仪器Windows操作系统,Microsoft Visual St

23、udio .NET 2010。三、实验内容在一个文本框中输入圆的半径,回车之后,将半径的值赋给circle类自定义的类的R属性,从而触发一个事件,在主窗体类中设计事件处理方法,在事件处理方法中要根据半径的值计算对应的圆的面积,周长和对应的球的体积。计算的结果通过文本框的方式显示出来。注意需要定义一个事件参数类来记录半径的值,事件触发后将半径的值传递给事件处理方法,事件处理方法才能根据半径的值进展计算。四、实验过程与结果 1.创建一个名为“EventExample的Windows应用程序,在主窗体上放置两个TextBox,将第二个TextBox的Multiline属性设置为true,ReadOn

24、ly属性设置为true,如如下图所示。 2.向应用程序添加一个类,在对应文件中添加如下代码:using System;using System.Collections.Generic;using System.Text;namespace EventExample class RadiusEventArgs : EventArgs /事件参数类的定义 private double r; public RadiusEventArgs(double r) this.r = r; public double R get return r; class Circle /Circle 类的定义 priv

25、ate double r; public delegate void MyDelegate(object ob, RadiusEventArgs e);/定义代理 public event MyDelegate radiusEvent; /定义事件 public double R set r = value; 3.回到主窗体的类,添加Circle类的对象;radiusEvent事件的实例化封装事件处理方法;编写事件处理方法。 public partial class Form1 : Form private Circle c; public Form1() Initializeponent()

26、; 创建Circle类的实例; c.radiusEvent 事件实例化; void c_radiusEvent(object ob, RadiusEventArgs e) textBox2.Text = 面积= + (Math.PI * e.R * e.R).ToString() + rn + 周长 = + (2 * Math.PI * e.R).ToString() + rn + 体积 = + (4.0 / 3 * Math.PI * e.R * e.R * e.R).ToString(); 4.映射textBox1的KeyDown事件,判断当输入回车时修改Circle类的R属性。c.R =

27、 Convert.ToDouble(textBox1.Text); 5.运行程序,测试设计的功能。五、实验总结代理就是用来定义指向方法的引用1.代理声明的语法: public/private delegate ();“实例化: 代理声明相当于类的定义。有了类的定义后我们要还需生成这个类的对象;同样有了代理的声明我们还需要“实例化代理委托是一种引用方法的类型。一旦为委托分配了方法,委托将于该方法具有完全一样的行为。委托的方法的使用可以向其他任何方法一样,具有参数和返回值。委托与代理的比拟代理:是把一些事情交给某人帮助去完成。委托:是当某件事情发生的时候,顺便干某件事情。委托就相当于一个触发器罢了

28、。实验四 WinForm程序设计一、目的与要求1.熟悉Windows应用程序的创建方法。2.掌握代理的本质。3.掌握事件代理的定义,事件的定义,事件的触发以与实例化事件代理和事件处理方法的实现。4.了解事件参数类的定义和使用方法。二、实验仪器Windows操作系统,Microsoft Visual Studio .NET 2010。三、实验内容创建一个Windows应用程序能实现简单的打字功能。首先随机生成一段英文字母序列,这段文本只能由英文大小写字母、数字、空格组成。用户可以在文本框中输入对应的文本,实现打字操作,待完成后,程序能给出此次打字的成绩,并重新随机生成一段文本。程序的界面类似下面

29、的形式: 在窗体上需要安装一个定时器,出题后设置打字总时间启动定时器,定时器每触发一次click事件修改一次剩余时间,当剩余时间为零时不允许再答题。在输入字符的过程中对输错的字符给出提示。四、实验过程与结果r的Windows应用程序。2.在主窗体上放置如示例所示的控件。两个TextBox、三个按钮和多个Label,一个richTextBox。分别设置好它们的属性。3.在窗体上放置一个定时器,映射定时器的tick事件。将定时器的Interval属性设置为1000,即一秒钟更新一次label。 if (time 0) time-; int time1 = time / 60; int time2

30、= time % 60; label3.Text = time1 +:+time2; else timer1.Enabled = false; richTextBox2.Enabled = false; MessageBox.Show(正确 + h + 个); 4.打开主窗体对应的代码文件,在成员定义中参加以下几个成员的定义:存放随机生成的源字符串对象;存放输入字符的目的字符串对象;存放固定字符的字符数组;存放设置字符个数的整型变量。5.在窗体的构造方法中对存放固定字符的数组进展初始化,例如:a = new char0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J

31、,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;6.分别映射三个按钮的单击按钮事件,对三个按钮应当起到的作用描述如下:“设置按钮,应当根据它旁边的编辑框中输入的数字来设置出题的字符个数;“开始出题并计时按钮应当构造一个随机数发生器,然后循环随机生成061X围内的随机数,将这个随机数作为字符数组的下标,继而获得随机字符串。交卷按钮要比拟源串和目标字符串之间一样字符的个数,利用消息框给出成绩。随机字符串的生成代码:string str = ; int i, t;Random ran

32、d = new Random(); for (i = 0; i n)MessageBox.Show(输入的字符超出计划数目,警告,MessageBoxButtons.YesNo,MessageBoxIcon.Error);return ;else if(richTextBox1.Textt-1 != textBox1.Textt-1 )richTextBox1.Select(t-1,1);richTextBox1.SelectionColor = Color.Red;richTextBox1.Select(t,0);elserichTextBox1.Select(t-1,1);richText

33、Box1.SelectionColor = Color.Black;richTextBox1.Select(t,0);五、实验总结事件event是一个非常重要的概念,我们的程序时刻都在触发和接收着各种事件:鼠标点击事件,键盘事件,以与处理操作系统的各种事件。所谓事件就是由某个对象发出的消息。比如用户按下了某个按钮,某个文件发生了改变,socket上有数据到达。触发事件的对象称作发送者sender,捕获事件并且做出响应的对象称作接收者receiver,一个事件可以存在多个承受者。 在异步机制中,事件是线程之间进展通信的一个非常常用的方式。比如:用户在界面上按下一个按钮,执行某项耗时的任务。程序此时启动一个线程来处理这个任务,用户界面上显示一个进度条指示用户任务执行的状态。这个功能就可以使用事件来进展处理。可以将处理任务的类作为消息的发送者,任务开始时,发出“TaskStart事件,任务进展中的不同时刻发出“TaskDoing事件,并且携带参数说明任务进展的比例,任务完毕的时候发出“TaskDone事件,在画面中接收并且处理这些事件。这样实现了功能,并且界面和后台执行任务的模块耦合程度也是最低的。18 / 18

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号