版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章 面向对象编程基础一 选择题1.语言的核心是面向对象编程(OOP),所有OOP语言都至少具有3个特性:(A)A封装,继承和多态 B. 类,对象和方法C封装,继承和派生 D. 封装,继承和接口2. C#的构造函数分为实例构造函数和静态构造函数,实例构造函数可以对(C)进行初始化,静态构造函数只能对(A)进行初始化。 A.静态成员 B.非静态成员 B.静态成员或非静态成员 C.静态成员和非静态成员3.C#实现了完全意义上的面向对象,所以它没有(D),任何数据域和方法都必须封装在类体中。 A.全局变量 B.全局常数 C.全局方法 D.全局变量,全局常数和全局方法4.方法中的值参数是(A)的参数
2、。 A.按值传递 B.按引用传递 C.按地址传递 D.不传递任何值5.下面对方法中的ref和out参数说明错误的是(C) A.ref和out参数传递方法相同,都是把实在参数的内存地址传递给方法,实参与形参指向同一个内存存储区域,但ref要求实参必须在调用之前明确赋过值。B.ref是将实参传入形参,out它只有用于从方法传出值,而不能用从方法调用处接收实参数据。C.ref和out参数因为传递的是实参的地址,所以要求实参和形参的数据类型必须一致。D.ref和out参数要求实参和形参的数据类型或者一致,或者实参能被隐式的转化为为形参的类型。6.假设class Mclass类的一个方法的签名为:pub
3、lic void Max,(out int max,params int a ),m1是Mclass类的一个对象,maaxval是一个int型的值类型变量,arrayA是一个int型的数组对象,则下列调用该方法有错的是()。A.m1.Max(out maxval); B. m1.Max(out maxval,4,5,3,);C.m1.Max(out maxval,ref arrayA); D.m1.Max(out maxval,3,3.5);7.以下有关属性的叙述正确的是()A.要求与字段域一一对应 B.只包含get访问器的属性是只写属性C.不能把它当变量使用 D.在静态属性访问器中可访问静态
4、数据二填空题1.构析函数不能由程序显示地调用,而是由系统在(释放对象)时自动调用。如果这个对象是一个派生类对象,那么在调用构析函数时,除了执行派生类的构析函数,也会执行基类的构析函数,其执行顺序与构析函数(正好相反)。2.C#实现了完全意义上的面向对象,所以它没有(全局变量、全局函数和全局方法),任何数据域,方法都必须封装在类中。3.在类中如果一个数据成员被声明为static的,则说明这个类的所有实例都共享这个static数据成员。在类体外,static成员不能通过(继承)来访问,它必须通过(静态方法(构造函数)方法)来访问。4.程序运行结果() using System; public cl
5、ass Test Public void changel( string s) s = s + “Changel”; public void change2 ( ref string s ) s = s + “Change2”; public void change3 (string s1, out string s2 ) s1 = s1 + “Change3”; s2 = s1; public class Exe8 public static void Main () string s1, s2; s1 = “Hello, ”; Test t1=new Test(); t1.changel(
6、s1); Console.WriteLine (“s1 after call to change1 is 0”, s1 ); t1.change2( ref s1); Console.WriteLine(“s1 after call to change2 is 0”, s1); t1.chnage3(s1, out s2 ); Console.WriteLine(“s1 after call to change3 is 0”, s1); Console.WriteLine(“s2 after call to change3 is 0”, s2); Console.Read(); 5.程序运行结
7、果是:(s1 after call to change1 is Hello S1 after call to change2 is Hello.change2 S1 after call to change3 is Hello.change2 ) using System; public class Test public void change (
8、string s) s = s + “Change1”; public void change ( ref string s ) s = s + “Change2”; public void change (string s1, out string s2 ) s1 = s1 + “Change3”; s2 = s1; public class Exe9 public static void Main () string s1, s2; s1 = “Hello, ”; Test t1=new Test(); t1.change (s1); Console.WriteLine (“s1 is 0
9、”, s1 ); t1.change ( ref s1); Console.WriteLine (“s1 is “0”, s1 ); t1.change (s1, out s2 ); Console.WriteLine (“s1 is 0, s2 is 1”, s1, s2 );Console.Read();三编程题1.定义描述复数的类,并实现复数的输入和输出。设计三个方法分别完成复数的加法,减法和乘法运算。解:Using System; Using System Collections Generic; Using System Text; Namespace static void mai
10、n(stringargs) complex a=new complex(2,5); complex b=new complex(4,6); complex c=a+b; c.print();complex d=a-b; d.print();complex m=a+b; m.print();comsole.Read(); Class complex Double r,v; Public complex(double r,double v) this r=r; this v=v; Public complex Public static complex operator+(complex a, c
11、omplex b) return new complex (a·r+b·r, a·r+b·v); Public static complex operator-( complex a, complex b) double y,k; y=a·r*a·v-a·v*b·v; K=a·r+b·v+a·v*b·r; Return new complex(y,k); Public void print() console.write(r+“+”+v+“i/n”); 2.定义全班学生成绩类
12、,包括:姓名,学号,C+成绩,英语成绩,数学成绩和平均成绩。设计4个方法:(1)全班成绩的输入;(2)求出每一个同学的平均成绩;(3)按平均成绩的升序排序;(4)输出全班成绩。using System;using System.Collections.Generic;using System.Text;using System.Text.RegularExpressions;static void Main(string args) #region Student Text AllStudent all = new AllStudent(3); all.AddAllreslut(); all.
13、RtAvg(); all.printStu(); all.sorting(); Console.WriteLine("(冒泡排序)排序后成绩如下:"); all.printStu(); #endregion #region Student类 public class Students #region 构造函数 public Students() public Students(string name, string number, float Cres, float Elys, float maths) _name = name; _number = number; _Cr
14、es = Cres; _ely = Elys; _math = maths; _avg = (Cres + Elys + maths) / 3; #endregion #region 字段 private string _name; public string Name get return _name; set _name = value; private string _number; public string Number get return _number; set _number = value; private float _Cres; public float Cres ge
15、t return _Cres; set _Cres = value; private float _ely; public float Ely get return _ely; set _ely = value; private float _math; public float Math get return _math; set _math = value; private float _avg; public float Avg get return _avg; set _avg = value; #endregion #endregion #region 全体学生类 public cl
16、ass AllStudent #region 构造函数 public AllStudent(int cout) _cout = cout; _stuList = new List<Students>(); #endregion #region 字段和属性 private int _cout; public int Cout get return _cout; set _cout = value; private List<Students> _stuList; public List<Students> StuList get return _stuList
17、; set _stuList = value; #endregion #region 学生成绩录入方法 public void AddAllreslut() for (int i = 0; i < _cout; i+) string strs = new string5; Console.WriteLine("请输入学生姓名:"); strs0 = Console.ReadLine(); Console.WriteLine("请输入学生学号:"); strs1 = Console.ReadLine(); Console.WriteLine(&quo
18、t;请输入学生C+成绩:"); strs2 = Console.ReadLine(); if (!Isfloat(strs2) Console.WriteLine("请输入正确的成绩:"); strs2 = Console.ReadLine(); else if (float.Parse(strs2) > 100) Console.WriteLine("请输入正确的成绩:"); strs2 = Console.ReadLine(); Console.WriteLine("请输入学生英语成绩:"); strs3 = Co
19、nsole.ReadLine(); if (!Isfloat(strs3) Console.WriteLine("请输入正确的成绩:"); strs3 = Console.ReadLine(); else if (float.Parse(strs3) > 100) Console.WriteLine("请输入正确的成绩:"); strs3 = Console.ReadLine(); Console.WriteLine("请输入学生数学成绩:"); strs4 = Console.ReadLine(); if (!Isfloat(
20、strs4) Console.WriteLine("请输入正确的成绩:"); strs4 = Console.ReadLine(); else if (float.Parse(strs4) > 100) Console.WriteLine("请输入正确的成绩:"); strs4 = Console.ReadLine(); Students student = new Students(strs0, strs1, float.Parse(strs2), float.Parse(strs3), float.Parse(strs4); Console.W
21、riteLine(strs0 + "同学的平均成绩为:" + student.Avg); Console.WriteLine(); _stuList.Add(student); #endregion #region 按学号查询平均成绩 public void RtAvg() Console.WriteLine("请输入要查询平均成绩学生的学号:"); string number = Console.ReadLine(); float avg = RtAvg(number); if (avg != 0) Console.WriteLine(number +
22、 "的平均成绩为:" + avg); Console.ReadKey(); else Console.WriteLine("没有该学号学生成绩!"); Console.ReadKey(); public float RtAvg(string number) for (int i = 0; i < _stuList.Count; i+) if (_stuListi.Number.Trim() = number.Trim() return _stuListi.Avg; return 0; #endregion #region 按平均分排序方法 publ
23、ic void sorting() List<Students> list = new List<Students>(); for (int i = 0; i < _stuList.Count; i+) Students stus = new Students(); for (int j = 0; j < _stuList.Count - i - 1; j+) if (_stuListj.Avg > _stuListj + 1.Avg) stus = _stuListj; _stuListj = _stuListj + 1; _stuListj + 1
24、 = stus; else stus = _stuListj + 1; if (i = _stuList.Count - 1) stus = _stuList0; list.Add(stus); _stuList = list; #endregion #region 输出所有学生成绩 public void printStu() Console.WriteLine("一下是所有学生信息:"); for (int i = 0; i < _stuList.Count; i+) Console.WriteLine(_stuListi.Name + "同学的基本信息
25、:"); Console.WriteLine("学号:" + _stuListi.Number + " C+成绩为:" + _stuListi.Cres + " 英语成绩为:" + _stuListi.Ely + " 数学成绩为:" + _stuListi.Math+" 平均成绩为:"+_stuListi.Avg); Console.WriteLine(); Console.ReadKey(); #endregion #region 验证浮点数方法 public static bool
26、 Isfloat(string Input) if (Input = null) return false; else string pattern = "(d*.)?d+$" if (Regex.Match(Input, pattern, RegexOptions.Compiled).Success) return true; else return false; #endregion #endregion3.定义一个描述学生基本情况的类,数据成员包括姓名,学号,C+,英语和数学成绩;成员函数包括输出数据,姓名和学号,3门课的成绩,求出总成绩和平均成绩。class stu
27、dent public string name; public int num; public float c, e, m, ave; public student() Console.Write("请输入name:"); name = Console.ReadLine(); Console.Write("请输入num:"); num = int.Parse(Console.ReadLine(); Console.Write("请输入C+成绩:"); c = float.Parse(Console.ReadLine(); Consol
28、e.Write("请输入English成绩:"); e = float.Parse(Console.ReadLine(); Console.Write("请输入Math成绩:"); m = float.Parse(Console.ReadLine(); public void print() Console.WriteLine("name=0,num=1,C+成绩=2,English成绩=3,Math成绩=4", name, num, c, e, m); public void getSumAve(bool print) float
29、sum = c + e + m; ave = sum / 3; if (print) Console.WriteLine("总成绩=0,平均成绩=1", sum, ave); class theclass student students; int count; public theclass() Console.WriteLine("学生数:"); count = int.Parse(Console.ReadLine(); students = new studentcount; for (int i = 0; i < students.Leng
30、th; i+) if (i = count) break; studentsi = new student(); studentsi.getSumAve(false); public void paixu() student t; for (int i = 0; i < students.Length; i+) for (int j = 0; j < students.Length - i - 1; j+) if (studentsi.ave > studentsi + 1.ave) t = studentsi; studentsi = studentsi + 1; stud
31、entsi + 1 = t; public void shuchu() for (int i = 0; i < students.Length; i+) Console.WriteLine("姓名:0,学号:1,c语言:2,数学:3,英语:4", , studentsi.num, studentsi.c, studentsi.m, studentsi.e); class program static void Main(string args) theclass m = new theclass(); m.paixu(); m.shuchu
32、(); Console.Read(); 4.设有一个描述坐标点的CPoint类,其私有变量x和y代表一个点的x,y坐标值。编写程序实现以下功能:利用构造函数传递参数,并设其默认参数值为60和75,利用成员函数display()输出这一默认的值;利用公有成员函数setpoint()将坐标值的修改为(80,150),并利用成员函数输出修改后的坐标值。using System;using System.Collections.Generic;public class MyClass public static void Main() CPoint cp=new CPoint(); cp.Displa
33、y(); cp.SetPoint(80,150); cp.Display(); Console.ReadLine(); public class CPoint private int x; private int y; public CPoint():this(60,75) public CPoint(int x,int y) this.x=x; this.y=y; public void Display() Console.WriteLine("x=0,y=1",x,y); public void SetPoint(int x,int y) this.x=x; this.
34、y=y; 5.定义一个人员类CPerson,包括数据成员:姓名,编号,性别和用于输入输出的成员函数。在此基础上派生出学生类CStudent(增加成绩)和教师类C Teacher(增加教龄),并实现对学生和教师信息的输入输出。class CPerson string name; int num; string sex; public void input() Console.WriteLine("姓名:"); = Console.ReadLine(); Console.WriteLine("编号:"); this.num = int.P
35、arse(Console.ReadLine(); Console.WriteLine("性别:"); this.sex = Console.ReadLine(); public void print() Console.WriteLine("姓名:" + name); Console.WriteLine("编号:" + num); Console.WriteLine("性别:" + sex); class CStudent : CPerson float score; public void input1() Co
36、nsole.WriteLine("这是学生类"); base.input(); Console.WriteLine("成绩:"); this.score = float.Parse(Console.ReadLine(); public void print1() base.print(); Console.WriteLine("成绩:" + score); class CTeacher : CPerson public int age; public void input2() Console.WriteLine("这是教师
37、类"); base.input(); Console.WriteLine("教龄:"); this.age = int.Parse(Console.ReadLine(); public void print2() base.print(); Console.WriteLine("教龄:" + age); class Program static void Main(string args) CStudent stu = new CStudent(); CTeacher teac = new CTeacher(); stu.input1(); s
38、tu.print1(); teac.input2(); teac.print2(); Console.ReadLine(); 6.把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类Cline,再派生出一个矩形类CRect。要求成员函数能求出两点间的距离,举行的周长和面积等。设计一个测试程序,并构造完整的程序。class cpoint public float x, y; public cpoint(float x, float y) this.x = x; this.y = y; class cline cpoint p1, p2; public cline(cpoint p1, cpoint p2) this.p1 = p1; this.p2 = p2; public float getLength() float len = (float)Math.Sqrt(p1.x - p2.x) * (p1.x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 节约能源资源实施全面管理体系
- 2026上海奉贤区机关事业单位编外人员招聘(公安岗位)5人备考题库及答案详解(各地真题)
- 2026第二季度陆军第82集团军医院社会聘用人员招聘53人备考题库带答案详解(完整版)
- 2026安徽长江产权交易所及下属子企业招聘工作人员4人备考题库含答案详解ab卷
- 国家管网集团东北公司2026届春季高校毕业生招聘备考题库及答案详解(历年真题)
- 2026江西省欧潭人力资源集团有限公司招聘见习生1名备考题库附答案详解(b卷)
- 2026中国邮储银行柳州市分行信用卡销售人员社会招聘备考题库含答案详解(典型题)
- 2026广东湛江市坡头区生态环境保护督察整改工作领导小组办公室招聘1人备考题库含答案详解(典型题)
- 2026重庆璧山文化旅游产业有限公司面向社会招聘5人备考题库及答案详解(全优)
- 2026浙江台州市温岭市市场监督管理局招聘编外人员3人备考题库及完整答案详解
- QBT 2768-2006 造纸机循环润滑系统冲洗油
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- 新高考语文专题复习:小说阅读答题模板
- 新汉语水平考试 HSK(四级)试题及答案
- 阳泉煤业集团兴峪煤业有限责任公司煤炭资源开发利用和矿山环境保护与土地复垦方案
- 圆锥曲线定义的应用
- “一题一课”教学设计-浙教版八年级数学下册
- GB/T 9163-2001关节轴承向心关节轴承
- GB/T 26163.1-2010信息与文献文件管理过程文件元数据第1部分:原则
- GA 270-2009警用服饰帽徽
- 习作:《我学会了-》课件
评论
0/150
提交评论