秋霞电影网午夜鲁丝片无码,真人h视频免费观看视频,囯产av无码片毛片一级,免费夜色私人影院在线观看,亚洲美女综合香蕉片,亚洲aⅴ天堂av在线电影猫咪,日韩三级片网址入口

C#習(xí)題參考答案-《c#面向?qū)ο蟪绦蛟O(shè)計》-鄭宇軍

上傳人:油** 文檔編號:45300728 上傳時間:2021-12-06 格式:DOC 頁數(shù):15 大?。?05KB
收藏 版權(quán)申訴 舉報 下載
C#習(xí)題參考答案-《c#面向?qū)ο蟪绦蛟O(shè)計》-鄭宇軍_第1頁
第1頁 / 共15頁
C#習(xí)題參考答案-《c#面向?qū)ο蟪绦蛟O(shè)計》-鄭宇軍_第2頁
第2頁 / 共15頁
C#習(xí)題參考答案-《c#面向?qū)ο蟪绦蛟O(shè)計》-鄭宇軍_第3頁
第3頁 / 共15頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《C#習(xí)題參考答案-《c#面向?qū)ο蟪绦蛟O(shè)計》-鄭宇軍》由會員分享,可在線閱讀,更多相關(guān)《C#習(xí)題參考答案-《c#面向?qū)ο蟪绦蛟O(shè)計》-鄭宇軍(15頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、精品文檔,僅供學(xué)習(xí)與交流,如有侵權(quán)請聯(lián)系網(wǎng)站刪除 習(xí)題參考答案 Chapter 1 1_1 對象 客觀世界中的事物都是對象,包括有形的物理對象,可感知的邏輯實體,以及概念化的抽象實體。它有自己的屬性,能夠執(zhí)行特定的操作。 類 具有相同屬性和操作的一組對象的集合;它描述的不是單個對象,而是“一類”對象的共同特征。其重要性在于它是面向?qū)ο蠹夹g(shù)中最重要的結(jié)構(gòu),它支持信息隱藏和封裝,進而支持對抽象數(shù)據(jù)類型(ADT)的實現(xiàn)。 1_2 略 1_3 參考圖如下 圖1 1_4 UML與面向?qū)ο? UML是一種定義良好、易于表達、功能強大且普遍適用的建模語言。它溶

2、入了軟件工程領(lǐng)域的新思想、新方法和新技術(shù)。它的作用域不限于支持面向?qū)ο蟮姆治雠c設(shè)計,還支持從需求分析開始的軟件開發(fā)的全過程。標(biāo)準(zhǔn)建模語言UML適用于以面向?qū)ο蠹夹g(shù)來描述任何類型的系統(tǒng),而且適用于系統(tǒng)開發(fā)的不同階段,從需求規(guī)格描述直至系統(tǒng)完成后的測試和維護。 Chapter 2 2_1 程序的功能一般通過方法代碼來實現(xiàn)。每個方法都是從其第一行代碼開始執(zhí)行,直至最后一行代碼結(jié)束,期間可以通過代碼來調(diào)用其他的方法,從而完成各式各樣的操作。C#程序的起點是由Main方法定義的,程序總是從Main方法的第一行代碼開始執(zhí)行,在Main方法結(jié)束時停止運行。 2_2 略(注:不同版本的Visual

3、 Studio的菜單項有所區(qū)別) 2_3 略(注:不同版本的Visual Studio引用的程序集有所區(qū)別) 2_4  C#源代碼會被編譯為一種通用的中間語言(IL)代碼,該語言類似于低級語言,但其代碼與具體的硬件平臺無關(guān);之后CLR再針對特定的平臺將IL程序翻譯為機器指令,加載所需要的資源并管理執(zhí)行。 2_5  //動態(tài)鏈接庫程序 using System; namespace p2_5 class Adder public static int Add(int a, int b) return a+b; //控制臺應(yīng)用程

4、序 using System; using p2_5; namespace P2_6 class Program static void Main() Console.WriteLine("請輸入兩個數(shù):"); int a = int.Parse(Console.ReadLine()); int b = int.Parse(Console.ReadLine()); Console.WriteLine("{0}+{1}={2}", a, b, Adder.Ad

5、d(a+b)); Chapter 3 3_1 略 3_2 第一:值類型的變量直接包含自身的所有數(shù)據(jù),每創(chuàng)建一個變量,就在內(nèi)存中開辟一塊區(qū)域;只有通過變量才能修改它所包含的數(shù)據(jù)。而引用類型的變量只存儲對目標(biāo)數(shù)據(jù)的引用,每創(chuàng)建一個變量,就增加一個指向目標(biāo)數(shù)據(jù)的指針;有可能出現(xiàn)多個引用類型的變量指向同一份數(shù)據(jù)的情況,這時修改一個變量就會影響到其它所有的變量。 第二:作為方法參數(shù)時,值類型變量傳遞的是數(shù)值,引用類型變量傳遞的是地址,因此如果方法的執(zhí)行代碼修改了變量,對值類型的變量不會有影響,但會改變引用類型的變量。 第三:裝箱是將一個值類型轉(zhuǎn)換為一個對象類型(obj

6、ect),而拆箱則是將一個對象類型顯式轉(zhuǎn)換為一個值類型。 3_3 略 3_4 對整數(shù)為真,對實數(shù)不一定,因為實數(shù)受到計算機精度的影響。 3-5 四次執(zhí)行的結(jié)果分別是:3,6,-6,-3 3-6 當(dāng)兩個操作數(shù)均為布爾類型時,與運算“&”和邏輯與運算“&&”的求值效果相同,或運算“|”和邏輯或運算“||”的求值效果相同。但異或運算“^”不存在對應(yīng)的條件邏輯運算。 3-7 不是。if-else可進行任意分支,而“?:”操作符要求第二和第三個操作數(shù)的類型必須一致。 3-8 class Program static void Main(string[] args)

7、 Console.WriteLine("按任意鍵退出,其它鍵繼續(xù)…"); while(Console.ReadKey().KeyChar!=Q) Console.WriteLine("請輸入本金:"); double x = double.Parse(Console.ReadLine()); Console.WriteLine("請輸入利率:"); double y = double.Parse(Console.ReadLine());

8、 Console.WriteLine("請輸入存款年數(shù):"); double z = double.Parse(Console.ReadLine()); Console.WriteLine("本息合計為:"); for (int i=0; i

9、ole.ReadLine(); 3-9 (1) class Program static void Main(string[] args) Console.WriteLine("Please input a number:"); int n = int.Parse(Console.ReadLine()); int i = 1, x = 1; while (i <= n) x = x * i; i++; Console.WriteLine

10、(x); Console.ReadLine(); (2) class Program static void Main() Console.WriteLine("Please input a number:"); int n = int.Parse(Console.ReadLine()); int i = 1, x = 1; do x = x * i; i++; while (i <= n); Conso

11、le.WriteLine(x); Console.ReadLine(); (3) class Program static void Main() Console.WriteLine("Please input a number:"); int n = int.Parse(Console.ReadLine()); int x = 1; for (int i = 1; i <= n; i++) x = x * i; Console.WriteLine

12、(x); Console.ReadLine(); 3-10 略 3-11 class Program static void Main() Console.WriteLine("請輸入一個字符串:"); Console.WriteLine(Simp(Console.ReadLine())); public static string Simp(string s) StringBuilder sb1 = new StringBuilder(); for (int i = 0

13、; i < s.Length; i++) while (i < s.Length - 1 && s[i] == s[i + 1]) i++; sb1.Append(s[i]); return sb1.ToString(); 3-12 (1) class Program static void Main() int sum = 0; for (int i = 1; i <= 50; i++) sum += 2*i;

14、 Console.WriteLine(sum); Console.ReadLine(); (2) class Program static void Main() int sum = 0, m = 1; for (int i = 1; i <= 10; i++) m = m * 2; sum = sum + m; Console.WriteLine(sum); Console.ReadLine(); 3-13 略 Cha

15、pter 4 4_1 靜態(tài)字段是指某個類型的所有對象所共享的字段,程序會在首次該類型時為字段分配存儲空間,所有對象都可以通過靜態(tài)成員來讀取或修改靜態(tài)字段。常量字段是特殊的靜態(tài)字段,它使用關(guān)鍵字const來修飾,且只能在聲明時賦值,之后不允許被修改。 只讀字段則是特殊的實例字段,它屬于單個對象所有,在聲明或構(gòu)造函數(shù)中賦值,而在創(chuàng)建對象之后不允許被修改。 只讀屬性是指在屬性中只定義get訪問函數(shù)而不定義set訪問函數(shù),那么使用者只能訪問該屬性,而不能對屬性賦值。 4_2 提示:在析構(gòu)函數(shù)中將靜態(tài)字段object_count的值減1 4_3 使用屬性更為安全(可以在訪問函數(shù)中增加控

16、制代碼),訪問更加靈活(可以在訪問函數(shù)中執(zhí)行各種計算),可擴展性也更好(修改屬性訪問代碼時不必修改字段名和屬性名,這就不會影響到其它對象和方法的使用)。 4_4 public class ComplexNumber private double x, y; public double X //實數(shù)部分 get {return x; } set {x = value; } public double Y; //虛數(shù)部分 get {return y; } set {y = value; }

17、 public ComplexNumber(double x, double y) this.x = x; this.y = y; public static ComplexNumber operator+(ComplexNumber c1, ComplexNumber c2) return new ComplexNumber(c1.x + c2.x, c1.y + c2.y); public static ComplexNumber operator-(ComplexNumber c1, ComplexNum

18、ber c2) return new ComplexNumber(c1.x - c2.x, c1.y - c2.y); public static bool operator ==(ComplexNumber c1, ComplexNumber c2) return (c1.x == c2.x) && (c1.y == c2.y); public static bool operator !=(ComplexNumber c1, ComplexNumber c2) return (c1.x != c2.x) || (c1

19、.y != c2.y); public static bool operator >(ComplexNumber c1, ComplexNumber c2) double a = c1.x*c1.x + c1.y*c1.y; double b = c2.x*c2.x + c2.y*c2.y; return a > b; public static bool operator >=(ComplexNumber c1, ComplexNumber c2) return a == b || a > b;

20、 public static bool operator <(ComplexNumber c1, ComplexNumber c2) return !(c1 >= c2); public static bool operator <=(ComplexNumber c1, ComplexNumber c2) return !(c1 > c2); 4_5 不能,因為this表示當(dāng)前對象,而靜態(tài)成員是通過類型本身而非對象來訪問的。 4_6 如果字符串格式錯誤的幾率很小,使用Parse方法具有更高的效率;否則應(yīng)選用TryParse方法來提高程序

21、的可靠性。 4_7 略 4_8 public int GetAge(DateTime birthday) int y = DateTime.Year, m = DateTime.Month, d = DateTime.Day; if (d < birthday.Day) m--; if (m < birthday.Month) y--; return y – birthday.Year; 4_9 略 4_10 一個省份中的城市、一個城市中的景點一般變化較少,適合用數(shù)組存儲。而旅游線路和方案要便于修改

22、。 Chapter 5 5_1 派生類自動繼承基類的公有成員和保護成員,但不能訪問基類的私有成員;外部對象只能訪問其中的公有成員,而不能訪問保護成員和私有成員。 5_2 構(gòu)造函數(shù)和析構(gòu)函數(shù)不能重載和隱藏。除非是默認構(gòu)造函數(shù),否則派生類的構(gòu)造函數(shù)須指明要調(diào)用的基類構(gòu)造函數(shù)形式。 重載或隱藏屬性時要分別對get和set訪問函數(shù)進行重載或隱藏 重載或隱藏索引函數(shù)時與屬性類似 5_3 略 5_4 (1)Animal中的抽象方法不能有執(zhí)行代碼 (2)派生類Bird不能只重載基類Animal中Life屬性的get訪問函數(shù) (3)派生類Mammal的life字段不要n

23、ew關(guān)鍵字來修飾,因為它不能訪問基類中的私有字段。 5_5 public abstract class Disk protected double total, free; public float Total //總?cè)萘? get { return total; } set { total = value; } public float Free //剩余容量 get { return free; } public virtual void Write(float size)

24、 if (free >= size) free -= size; else Console.WriteLine("剩余空間不足!"); public virtual void Delete(float size) if (free + size <= total) free += size; public class HardDisk public HardDisk(float size) this.total = this.free = s

25、ize; public class FlashDisk public FlashDisk() this.total = this.free = 64000; public class CDROM public override void Delete(float size) Console.WriteLine("光盤不可刪除!"); 5_6 // 抽象類:圖形Shape public abstract class Shape public abstract double Perimeter { get; }

26、 public abstract double Area { get; } // 派生類: 圓形Circle public class Circle : Shape private double r; public double R; get { return r; } set { r = value; } public override double Perimeter get { return 6.28 * r; } public override double Area

27、get { return 3.14 * r * r; } public Circle(double r) this.r = r; public class Rectangle : Shape private double a, b; public double A; get { return a; } set { a = value; } public double B; get { return b; } set { b = value; } publ

28、ic override double Perimeter get { return 2 * (a + b); } public override double Area get { return a * b; } public Rectangle(double a, double b) this.a = a; this.b = b; 5_7 在新類型中定義原結(jié)構(gòu)類型的字段成員,通過該字段來調(diào)用結(jié)構(gòu)的成員功能。 5_8 略 5_9 略 Chapter 6 6_1 (1)定義委托原型,其

29、簽名應(yīng)與要封裝的方法保持一致。 (2)定義委托類型的變量。 (3)使用new關(guān)鍵字創(chuàng)建委托對象,并將要封裝的方法名作為參數(shù)傳遞給構(gòu)造函數(shù)。 (4)通過委托變量來調(diào)用方法。 6_2 public static void Compare(Student s1, Student s2) CompareFunction compare = new CompareFunction(CompareGrade); int x = compare(s1, s2); if (x == 0) compare = CompareGrade;

30、 x = compare(s1, s2); if (x == 0) compare = CompareGrade; x = compare(s1, s2); return x; public static void SortAndPrint(Student[] students) for (int i = students.Length - 1; i > 0; i--) for (int j = 0; j < i; j++) if (Compa

31、re(students[j], students[j + 1]) > 0) { Student s = students[j]; students[j] = students[j + 1]; students[j + 1] = s; foreach (Student s in students) Console.WriteLine(s); 6_3 public static void WriteDelegateInfo(Delegate dg) if (dg == null)

32、return; Console.WriteLine("MethodName: {0}", dg.Method.Name); Console.WriteLine("MethodBelongType: {0}", dg.Method.DeclaringType); Console.WriteLine("Target: {0}", dg.Target); foreach (Delegate dg in dg3.GetInvocationList()) Console.WriteLine(dg.Method); Console

33、.WriteLine(dg.Target); 6_4 輸出為:2, 3, 4 6_5 匿名方法可以把一段代碼直接作為參數(shù)使用,而無需顯式地定義方法的原型。通過捕獲外部變量,匿名方法還能夠?qū)崿F(xiàn)與外部程序的狀態(tài)共享。這不僅能夠簡化程序,提高了代碼的可維護性,還大大方便了程序中的各種計算。 6_6 事件是委托類型的對象,事件的觸發(fā)方法是該對象的客戶,而事件的處理方法是該對象提供的服務(wù)。 6_7 旅行團所關(guān)聯(lián)的導(dǎo)游和負責(zé)業(yè)務(wù)員是明確的,可以在改變狀態(tài)的方法代碼中訪問這些導(dǎo)游和業(yè)務(wù)員對象。而旅行團所關(guān)聯(lián)的游客可能不斷變化,采用發(fā)布/訂閱方式能夠方便地通知所有綁定的游客。 6_8

34、略 Chapter 7 7_1 可從以下幾方面考慮: (1)合理布局:在左上方或正上方提供車次和站名的輸入控件,在中央顯示查詢結(jié)果。 (2)方便導(dǎo)航:在查詢結(jié)果中,通過單擊車次和站名可直接顯示相關(guān)信息。 (3)簡化輸入:允許用戶通過簡拼或雙拼等方式來輸入中文站名。 (4)撤銷和恢復(fù):允許用戶回退到上次查詢。 (5)等待響應(yīng):查詢時間較長時,顯示等待光標(biāo),還可先顯示部分查詢結(jié)果。 7_2 對于不常用的字體族,創(chuàng)建其Font對象時要先檢查用戶計算機上是否安裝了該字體。必要時可隨程序安裝字體。 7_3 在窗體尺寸改變事件中,通過Form對象的Height屬性

35、來進行控制。 7_4 通過文本框的KeyPress事件來進行控制: void textBox1_KeyPress(object sender, KeyPressEventArgs e) int ch = e.KeyChar; if (ch<48 || ch>57 && ch!=8) e.Handled = false; 7_5 略 7_6 如果增加之后的數(shù)值超過控件的Maximum,第二行代碼執(zhí)行后會發(fā)生異常,而第一行代碼會使控件中的數(shù)值等于Maximum。 7_7 略 7_8 提示:可參考MSDN幫助中的Control控件

36、文檔。 7_9 主要方面有: (1)業(yè)務(wù)對象與窗體界面綁定,通常是在窗體類中定義一個業(yè)務(wù)對象類型的字段成員,通過窗體初始化事件的處理代碼來將對象信息顯示在窗體控件中。 (2)在保存對象信息時,通常要檢查窗體控件中對應(yīng)的輸入信息是否完整和合法,否則應(yīng)要求用戶重新輸入。 (3)如果要在不同的窗體間傳遞對象,那么可將對象變量作為目標(biāo)窗體的構(gòu)造函數(shù)參數(shù),通過其構(gòu)造函數(shù)來初始化對應(yīng)的對象字段。 (4)如果多個窗體共享一個對象信息,那么在其中一個窗體修改了對象信息后,應(yīng)及時更新其它窗體的顯示內(nèi)容。 Chapter 8 8_1 以1000000以內(nèi)的int值為例: static

37、 void Main() FileStream fs1 = new FileStream("num.txt", FileMode.Create); for (int a = 1, b = 1; a <= 1000000; a += b) int t = b; b = a; a = t; int x = a/(2<<24); fs1.WriteByte((byte)x); //寫入25~32位 a -= x; x = a/(2<<16);

38、 fs1.WriteByte((byte)x); //寫入17~24位 a -= x; x = a/(2<<8); fs1.WriteByte((byte)x); //寫入9~16位 a -= x; fs1.WriteByte((byte)x); //寫入1~8位 fs1.Position = 0; Console.Write("請輸入要讀取的數(shù)列項: "); int i = int.Parse(Console.ReadLine()); fs1.Position

39、 = 4 * i; int y = 16777216*fs1.ReadByte() + 65536*fs1.ReadByte() + 256*fs1.ReadByte() + fs1.ReadByte(); Console.WriteLine("數(shù)列項為: " + y); fs1.Close(); 8_2 提示:創(chuàng)建一個文本文件,在窗體的關(guān)閉事件中向文件寫入當(dāng)前時間,在窗體的啟動事件中讀取上次寫入時間。 8_3 在控制臺逐行依次輸出48~57 8_4 二進制方式對文件的存取效率較高,但編程更為復(fù)雜,需要處理字節(jié)類型與其它各種類型之間的轉(zhuǎn)換。文本方式存

40、取文件速度較慢,占用的磁盤容量也較大,但編程更為簡單,只需要把各種類型都按字符串格式處理即可。 8_5 略 8_6 應(yīng)在顯示對話框之前設(shè)置的屬性主要有:Filter、FilterIndex、InitialDirectory、RestoreDirectory、Multiselect、OverwritePrompt;之后設(shè)置的屬性主要有FileName有FileNames。 8_7 在寫入每個對象時,應(yīng)首先將對象的類型名寫入文件;在讀取文件時,首先讀取類型名,再根據(jù)不同的類型來使用構(gòu)造函數(shù)創(chuàng)建對象。 8_8 在寫入文件流時,可通過一個密鑰字符來對文件的每個字節(jié)進行加密,即將字節(jié)與密

41、鑰字符進行與或運算后寫入文件,讀取時再與密鑰字符進行一次與或運算來進行解密: public void Save(BinaryWriter writer, char key) char[] chs = new char[_username.Length]; for (int i=0; i

42、ngth; i++) chs[i] = _password[i] ^ key; writer.Write(chs); writer.Write(_staffId ^ key); public static User Load(BinaryReader reader, char key) string username = reader.ReadString(); char[] chs1 = new char[username.Length]; for (int i=0; i

43、 chs1[i] = username[i] ^ key; string password = reader.ReadString(); char[] chs2 = new char[password.Length]; for (int i=0; i

44、提示:要管理用戶登錄系統(tǒng)的記錄,可為每個用戶創(chuàng)建一個文本文件(如“用戶ID”+“.log”),在其中記錄用戶各次登錄的時間信息。 Chapter 9 9_1 try-catch:正常情況下執(zhí)行try代碼段中的語句,出現(xiàn)異常就轉(zhuǎn)而執(zhí)行catch代碼段中的語句。如果catch語句限定了異常類型,那么只有指定異常發(fā)生時轉(zhuǎn)入catch代碼段,否則不作處理。 try-catch-finally:執(zhí)行情況和try-catch結(jié)構(gòu)類似,但不論是否發(fā)生異常,程序最后都會執(zhí)行finally語句中的代碼段。finally語句應(yīng)放在所有catch語句之后,且只能出現(xiàn)一次。 try-catch:實際上

45、不進行異常處理。正常情況下執(zhí)行try代碼段中的語句,出現(xiàn)異常后則在執(zhí)行完finally代碼段之后引發(fā)異常。 9_2 輸出"發(fā)生參數(shù)異常" 9_3 對于常量表達式,如果使用checked操作符強制對表達式進行類型檢查,或是在編譯時指定了“/checked+”選項,那么發(fā)生溢出的表達式將不能通過編譯。如果不要求檢查,那么執(zhí)行到發(fā)生溢出的表達式就會引發(fā)OverflowException異常。 對于一般運算表達式,執(zhí)行到發(fā)生溢出的表達式都會引發(fā)OverflowException異常。 表達式發(fā)生溢出主要是指整數(shù)變量的范圍超出了其類型的最大/最小取值范圍,如對取值為30000的short型

46、變量加10000,或是將1000強制轉(zhuǎn)換為byte型變量。 9_4 打開文件時可能引發(fā)的異常主要有: (1)DirverNotFoundException:指定的磁盤分區(qū)不存在。 (2)DirectoryNotFoundException:指定的文件目錄不存在。 (3)FileNotFoundException:指定的文件不存在。 (4)FileLoadException:加載文件內(nèi)容失敗。 如果文件是用于記錄程序相關(guān)信息,那么在打開文件失敗時應(yīng)創(chuàng)建新文件;如果用戶需要使用程序來編輯文件內(nèi)容,那么應(yīng)向用戶報告錯誤并由用戶選擇相應(yīng)的處理方式。 9_5 略 9_6 略 Ch

47、apter 10 10_1 抽象類和接口都不能被實例化,抽象類中的抽象方法和接口中的接口方法都只有方法聲明,而沒有執(zhí)行體。抽象方法和接口方法都需要在具體的派生類中提供實現(xiàn)。 抽象類可以有成員字段和非抽象方法,但接口不能。即接口是比抽象類更為“抽象”的一種數(shù)據(jù)類型。 10_2 如果需要通過對象實例來調(diào)用方法,那么應(yīng)采用隱式實現(xiàn)的方式。如果要區(qū)別不同接口的同名方法,那么應(yīng)采用顯式實現(xiàn)的方式,并在調(diào)用時先將對象轉(zhuǎn)換為對應(yīng)的接口類型。 10_3 不能,必須是重載基類中的虛擬方法才能使用override修飾符。 10_4 略 10_5 組合框和列表框的元素集合都實現(xiàn)了IColle

48、ction接口,那么可以創(chuàng)建一個ArrayList或List列表對象,將元素集合作為參數(shù)傳遞給列表對象的構(gòu)造函數(shù),而后調(diào)用列表對象的Sort方法進行排序。 10_6 略 10_7 包括二叉樹節(jié)點類型BTNode和二叉樹類型BinaryTree兩部分,參考代碼如下。 ///

/// 二叉樹節(jié)點類型 /// public class BTNode private object value; private BTNode left, right; pu

49、blic object Value get { return this.value; } set { this.value = value; } public BTNode Left get { return left; } set { left = value; } public BTNode Right get { return right; } set { right = value; }

50、 public BTNode(object obj) value = obj; ///

/// 二叉樹類型 /// class BinaryTree : ICollection private BTNode root; public BTNode Root get { return root; } public int Count get { return PreTraver

51、se(root).Length; } private BinaryTree() this.root = null; public BinaryTree(object obj) this.root = new BTNode(obj); public BinaryTree(BTNode root) this.root = root; public void CopyTo(Array array, int index) Pre

52、Traverse(root).CopyTo(array, index); IEnumerator IEnumerable.GetEnumerator() return PreTraverse(root).GetEnumerator(); bool ICollection.IsSynchronized get { return false; } object ICollection.SyncRoot get { return null; } pub

53、lic static object[] PreTraverse(BTNode node) //前序遍歷 if (node == null) return null; ArrayList nodes = new ArrayList(); nodes.Add(node.Value); if (node.Left != null) nodes.AddRange(PreTraverse(node.Left));

54、 if (node.Right != null) nodes.AddRange(PreTraverse(node.Right)); return nodes.ToArray(); public static object[] InTraverse(BTNode node) //中序遍歷 if (node == null) return null; ArrayList nodes = new ArrayList();

55、 if (node.Left != null) nodes.AddRange(InTraverse(node.Left)); nodes.Add(node.Value); if (node.Right != null) nodes.AddRange(InTraverse(node.Right)); return nodes.ToArray(); public static object[] PostTraverse(BT

56、Node node) //后序遍歷 if (node == null) return null; ArrayList nodes = new ArrayList(); if (node.Left != null) nodes.AddRange(PostTraverse(node.Left)); if (node.Right != null) nodes.AddRange(PostTraver

57、se(node.Right)); nodes.Add(node.Value); return nodes.ToArray(); public static BinaryTree EmptyBinaryTree get { return new BinaryTree(); } class Program static void Main() BinaryTree tree1 = new BinaryTree(1); int

58、 i = 1; BTNode r = tree1.Root; while (i < 100) r.Left = new BTNode(i * 2); r.Right = new BTNode(i * 3); if (i % 2 == 1) r = r.Left; i = i * 2; else

59、 r = r.Right; i = i * 3; object[] result = BinaryTree.PreTraverse(tree1.Root); Console.WriteLine("前序遍歷:"); foreach (object obj in result) Console.Write(obj.ToString() + ,); Console.WriteLine("\n中序遍歷:");

60、 result = BinaryTree.InTraverse(tree1.Root); foreach (object obj in result) Console.Write(obj.ToString() + ,); Console.WriteLine("\n后序遍歷:"); result = BinaryTree.PostTraverse(tree1.Root); foreach (object obj in result)

61、 Console.Write(obj.ToString() + ,); 10_8 略 Chapter 11 11_1 略 11_2 泛型類A中的嵌套類型B使用的類型參數(shù)S在A中沒有定義,應(yīng)將其改為B 11_3 輸出內(nèi)容如下: 2 : As System.Int32 2 : Bs System.Int32 2.5 : Bs System.Double 2.5 : As System.Double 11_4 略 11_5 static void Main() List l1 = n

62、ew List(); l1.Add("王小紅"); l1.Add("周軍"); l1.Insert(0, "方小白"); l1.Add("Smith"); l1.Insert(1, "Jerry"); Console.WriteLine("排序前: "); foreach (string s in l1) Console.Write(s + ); l1.Sort(); Console.WriteLine("\n排序后: "); foreach (string

63、s in l1) Console.Write(s + ); 11_6 提示:將二叉樹節(jié)點類型BTNode改為泛型類型BTNode,其value字段/Value屬性類型由object改為T,再修改相應(yīng)的前序、中序和后序遍歷等方法代碼: public static T[] PreTraverse(BTNode node) //前序遍歷 if (node == null) return null; List nodes = new List();

64、 nodes.Add(node.Value); if (node.Left != null) nodes.AddRange(PreTraverse(node.Left)); if (node.Right != null) nodes.AddRange(PreTraverse(node.Right)); return nodes.ToArray(); public static T[] InTraverse(BTNode

65、 node) //中序遍歷 if (node == null) return null; List nodes = new List(); if (node.Left != null) nodes.AddRange(InTraverse(node.Left)); nodes.Add(node.Value); if (node.Right != null)

66、 nodes.AddRange(InTraverse(node.Right)); return nodes.ToArray(); public static T[] PostTraverse(BTNode node) //后序遍歷 if (node == null) return null; List nodes = new List(); if (node.Left != null) nodes.AddRange(PostTraverse(node.Left)); if (node.Right != null) nodes.AddRange(PostTraverse(node.Right)); nodes.Add(node.Value);

展開閱讀全文
溫馨提示:
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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!