面向?qū)ο缶幊袒A(chǔ)_第1頁
面向?qū)ο缶幊袒A(chǔ)_第2頁
面向?qū)ο缶幊袒A(chǔ)_第3頁
面向?qū)ο缶幊袒A(chǔ)_第4頁
面向?qū)ο缶幊袒A(chǔ)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第三章 面向?qū)ο缶幊袒A(chǔ)一 選擇題1.語言的核心是面向?qū)ο缶幊蹋∣OP),所有OOP語言都至少具有3個特性:(A)A封裝,繼承和多態(tài) B. 類,對象和方法C封裝,繼承和派生 D. 封裝,繼承和接口2. C#的構(gòu)造函數(shù)分為實(shí)例構(gòu)造函數(shù)和靜態(tài)構(gòu)造函數(shù),實(shí)例構(gòu)造函數(shù)可以對(C)進(jìn)行初始化,靜態(tài)構(gòu)造函數(shù)只能對(A)進(jìn)行初始化。 A.靜態(tài)成員 B.非靜態(tài)成員 B.靜態(tài)成員或非靜態(tài)成員 C.靜態(tài)成員和非靜態(tài)成員3.C#實(shí)現(xiàn)了完全意義上的面向?qū)ο螅运鼪]有(D),任何數(shù)據(jù)域和方法都必須封裝在類體中。 A.全局變量 B.全局常數(shù) C.全局方法 D.全局變量,全局常數(shù)和全局方法4.方法中的值參數(shù)是(A)的參數(shù)

2、。 A.按值傳遞 B.按引用傳遞 C.按地址傳遞 D.不傳遞任何值5.下面對方法中的ref和out參數(shù)說明錯誤的是(C) A.ref和out參數(shù)傳遞方法相同,都是把實(shí)在參數(shù)的內(nèi)存地址傳遞給方法,實(shí)參與形參指向同一個內(nèi)存存儲區(qū)域,但ref要求實(shí)參必須在調(diào)用之前明確賦過值。B.ref是將實(shí)參傳入形參,out它只有用于從方法傳出值,而不能用從方法調(diào)用處接收實(shí)參數(shù)據(jù)。C.ref和out參數(shù)因?yàn)閭鬟f的是實(shí)參的地址,所以要求實(shí)參和形參的數(shù)據(jù)類型必須一致。D.ref和out參數(shù)要求實(shí)參和形參的數(shù)據(jù)類型或者一致,或者實(shí)參能被隱式的轉(zhuǎn)化為為形參的類型。6.假設(shè)class Mclass類的一個方法的簽名為:pub

3、lic void Max,(out int max,params int a ),m1是Mclass類的一個對象,maaxval是一個int型的值類型變量,arrayA是一個int型的數(shù)組對象,則下列調(diào)用該方法有錯的是()。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.以下有關(guān)屬性的敘述正確的是()A.要求與字段域一一對應(yīng) B.只包含get訪問器的屬性是只寫屬性C.不能把它當(dāng)變量使用 D.在靜態(tài)屬性訪問器中可訪問靜態(tài)

4、數(shù)據(jù)二填空題1.構(gòu)析函數(shù)不能由程序顯示地調(diào)用,而是由系統(tǒng)在(釋放對象)時自動調(diào)用。如果這個對象是一個派生類對象,那么在調(diào)用構(gòu)析函數(shù)時,除了執(zhí)行派生類的構(gòu)析函數(shù),也會執(zhí)行基類的構(gòu)析函數(shù),其執(zhí)行順序與構(gòu)析函數(shù)(正好相反)。2.C#實(shí)現(xiàn)了完全意義上的面向?qū)ο?,所以它沒有(全局變量、全局函數(shù)和全局方法),任何數(shù)據(jù)域,方法都必須封裝在類中。3.在類中如果一個數(shù)據(jù)成員被聲明為static的,則說明這個類的所有實(shí)例都共享這個static數(shù)據(jù)成員。在類體外,static成員不能通過(繼承)來訪問,它必須通過(靜態(tài)方法(構(gòu)造函數(shù))方法)來訪問。4.程序運(yùn)行結(jié)果() 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.程序運(yùn)行結(jié)

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.定義描述復(fù)數(shù)的類,并實(shí)現(xiàn)復(fù)數(shù)的輸入和輸出。設(shè)計(jì)三個方法分別完成復(fù)數(shù)的加法,減法和乘法運(yùn)算。解: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.定義全班學(xué)生成績類

12、,包括:姓名,學(xué)號,C+成績,英語成績,數(shù)學(xué)成績和平均成績。設(shè)計(jì)4個方法:(1)全班成績的輸入;(2)求出每一個同學(xué)的平均成績;(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("(冒泡排序)排序后成績?nèi)缦?"); all.printStu(); #endregion #region Student類 public class Students #region 構(gòu)造函數(shù) 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 全體學(xué)生類 public cl

16、ass AllStudent #region 構(gòu)造函數(shù) 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 學(xué)生成績錄入方法 public void AddAllreslut() for (int i = 0; i < _cout; i+) string strs = new string5; Console.WriteLine("請輸入學(xué)生姓名:"); strs0 = Console.ReadLine(); Console.WriteLine("請輸入學(xué)生學(xué)號:"); strs1 = Console.ReadLine(); Console.WriteLine(&quo

18、t;請輸入學(xué)生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("請輸入學(xué)生英語成績:"); 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("請輸入學(xué)生數(shù)學(xué)成績:"); 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 + "同學(xué)的平均成績?yōu)?" + student.Avg); Console.WriteLine(); _stuList.Add(student); #endregion #region 按學(xué)號查詢平均成績 public void RtAvg() Console.WriteLine("請輸入要查詢平均成績學(xué)生的學(xué)號:"); string number = Console.ReadLine(); float avg = RtAvg(number); if (avg != 0) Console.WriteLine(number +

22、 "的平均成績?yōu)?" + avg); Console.ReadKey(); else Console.WriteLine("沒有該學(xué)號學(xué)生成績!"); 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 輸出所有學(xué)生成績 public void printStu() Console.WriteLine("一下是所有學(xué)生信息:"); for (int i = 0; i < _stuList.Count; i+) Console.WriteLine(_stuListi.Name + "同學(xué)的基本信息

25、:"); Console.WriteLine("學(xué)號:" + _stuListi.Number + " C+成績?yōu)?" + _stuListi.Cres + " 英語成績?yōu)?" + _stuListi.Ely + " 數(shù)學(xué)成績?yōu)?" + _stuListi.Math+" 平均成績?yōu)?"+_stuListi.Avg); Console.WriteLine(); Console.ReadKey(); #endregion #region 驗(yàn)證浮點(diǎn)數(shù)方法 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.定義一個描述學(xué)生基本情況的類,數(shù)據(jù)成員包括姓名,學(xué)號,C+,英語和數(shù)學(xué)成績;成員函數(shù)包括輸出數(shù)據(jù),姓名和學(xué)號,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("學(xué)生數(shù):"); 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,學(xué)號:1,c語言:2,數(shù)學(xué):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.設(shè)有一個描述坐標(biāo)點(diǎn)的CPoint類,其私有變量x和y代表一個點(diǎn)的x,y坐標(biāo)值。編寫程序?qū)崿F(xiàn)以下功能:利用構(gòu)造函數(shù)傳遞參數(shù),并設(shè)其默認(rèn)參數(shù)值為60和75,利用成員函數(shù)display()輸出這一默認(rèn)的值;利用公有成員函數(shù)setpoint()將坐標(biāo)值的修改為(80,150),并利用成員函數(shù)輸出修改后的坐標(biāo)值。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,包括數(shù)據(jù)成員:姓名,編號,性別和用于輸入輸出的成員函數(shù)。在此基礎(chǔ)上派生出學(xué)生類CStudent(增加成績)和教師類C Teacher(增加教齡),并實(shí)現(xiàn)對學(xué)生和教師信息的輸入輸出。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("這是學(xué)生類"); 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.把定義平面直角坐標(biāo)系上的一個點(diǎn)的類CPoint作為基類,派生出描述一條直線的類Cline,再派生出一個矩形類CRect。要求成員函數(shù)能求出兩點(diǎn)間的距離,舉行的周長和面積等。設(shè)計(jì)一個測試程序,并構(gòu)造完整的程序。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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論