C网络应用编程课后作业答案.docx

上传人:rrsccc 文档编号:11077642 上传时间:2021-06-27 格式:DOCX 页数:36 大小:121.14KB
返回 下载 相关 举报
C网络应用编程课后作业答案.docx_第1页
第1页 / 共36页
C网络应用编程课后作业答案.docx_第2页
第2页 / 共36页
C网络应用编程课后作业答案.docx_第3页
第3页 / 共36页
C网络应用编程课后作业答案.docx_第4页
第4页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C网络应用编程课后作业答案.docx》由会员分享,可在线阅读,更多相关《C网络应用编程课后作业答案.docx(36页珍藏版)》请在三一文库上搜索。

1、网络应用编程作业及答案课程名称 网络应用编程院(部) 计算机与信息工程学院教研室(实验网络工程教研室室)主讲教师 侯彦娥职称 讲师21 世纪高等学校计算机规划教材(精品系列)C#程序设计及应用教程(第 2 版),马骏等主编,人使用教材民邮电. 专业.专注. 专业.专注.第1章作业及答案QQ有奖活动 .suifengshi.本章作业题目:P16 页 1 、 2、 31、可以用C#编写哪些类型的应用程序?【解答】1) 控制台应用程序。2) Windows 应用程序。3) ASP.NET Web 应用程序。4) ASP.NET Web 服务应用程序。5) ASP.NET 水晶报表 Web应用程序。6

2、) 智能设备应用程序。7) 安装和部署应用程序。2、什么是命名空间?命名空间和类库的关系是什么?【解答】1) 命名空间是对类的一种逻辑上的分组,即将类按照某种关系或联系划分到不同的命名空间下。2) 命名空间又可以包含其它的命名空间,例如System.Windows.Forms ,是指 System 命名空间下有Windows 命名空间, Windows 命名空间下有Forms 命名空间。3) 所有类库都在规定的命名空间下。3、举例说明using 关键字有哪些主要用途。【解答】在 C#中, using 关键字有3 个用途1)指定引用的命名空间,例如: usingSystem.Windows.Fo

3、rms;2)简化命名空间的层次表达形式,例如:using WinForm=System.Windows.Form;3) 作为语句,定义一个围。例如:Font font1 = new Font(Arial, 10.0f); using (font1) 程序执行到“ ”时,就会自动释放font1对象。第2章作业及答案本章作业题目:P41 2 、 3、4、 5、 7容易做错的题目:5 题(有部分同学看成求平方和了)1、 C#支持的数据类型有那些?值类型和引用类型有何不同?【解答】. 专业.专注.C# 支持的数据类型有:(1) 值类型,包括:简单类型、结构类型、枚举类型。其中,简单类型又分为:整型、布

4、尔型、字符型、浮点型、小数型。(2) 引用类型,包括:对象类型、类类型、接口、元数据、字符串类型、数组。值类型和引用类型的区别在于,值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。当把一个值变量赋给另一个值变量时,会在堆栈(stack )中保存两个完全相同的值; 而把一个引用变量赋给另一个引用变量,则会在堆栈中保存对同一个堆( heap)位置的两个引用。进行数据操作时, 对于值类型, 由于每个变量都有自己的值, 因此对一个变量的操作不会影响到其他变量;对于引用类型的变量,对一个变量的数据进行操作就是对这个变量在堆中的数据进行操作,如果两个引用类型的变量引用同

5、一个对象,实际含义就是它们在堆栈中保存的堆的地址相同,因此对一个变量的操作就会影响到引用同一个对象的另一个变量。2、 C#中不同整型之间进行转换的原则是什么?【解答】在整型之间进行转换时,小围类型可以隐式转换为大围类型,但大围类型转换为小围类型时需要使用显式转换。3、简述装箱和拆箱的过程。【解答】装箱是将值类型隐式地转换为object类型或者转换为由该值类型实现了的接口类型。装箱一个数值会为其分配一个对象实例,并把该数值拷贝到新对象中。拆箱是显式地把object类型转换成值类型,或者把值类型实现了的接口类型转换成该值类型。4、分别写出下列语句执行的结果。1) Console.WriteLine

6、(0-0:pgood,12.34F);2) Console.WriteLine(0-0:#good,0);3) Console.WriteLine(0-0:00000good,456);【解答】12.34-1,234.00%good0-good456-00456good5、编写一个控制台应用程序,输出1 到 5 的平方值,要求:1)用 for语句实现。2)用 while语句实现。3)用 do-while语句实现。【解答】using System;using System.Collections.Generic;using System.Text;namespace outputSquareVa

7、lueclass Programstatic void Main()/ 用 for 语句实现for (int i = 1; i = 5; i+). 专业.专注.Console.WriteLine(0的平方值为 1, i, i * i);/ 用 while 语句实现QQ有奖活动 .suifengshi.int j = 0;while (j+ 5)Console.WriteLine(0的平方值为 1, j, j * j);/ 用 do-while 语句实现int k = 1;doConsole.WriteLine(0的平方值为 1, k, k * k); while (k+ 5); Console

8、.ReadLine();6、编写一个控制台应用程序,要求用户输入5 个大写字母,如果用户输入的信息不满足要求,提示帮助信息并要求重新输入。【解答】using System;using System.Collections.Generic;using System.Text;namespace inputCapitalLetterclass Programstatic void Main()bool ok = false;while (ok = false)Console.Write(请输入 5 个大写字母: );string str = Console.ReadLine();if (str.L

9、ength != 5)Console.WriteLine(你输入的字符个数不是5 个,请重新输入。);else. 专业.专注.ok = true;for (int i = 0; i 5; i+)char c = stri;if (c Z)QQ有奖活动 .suifengshi.Console.WriteLine(第 0 个字符“ 1 ”不是大写字母,请重新输入。, i + 1, c);ok = false;break;7、编写一个控制台应用程序,要求完成下列功能。1) 接收一个整数 n。2) 如果接收的值 n 为正数,输出 1 到 n 间的全部整数。3) 如果接收的值为负值,用 break 或者

10、 return 退出程序。4) 转到 (1) 继续接收下一个整数。【解答】using System;using System.Collections.Generic;using System.Text;namespace testOutputclass Programstatic void Main()while (true)Console.Write(请输入一个整数( 负值结束 ) :);string str = Console.ReadLine();tryint i = Int32.Parse(str);if (i 0) break;for (int j = 1; j = i; j+) C

11、onsole.WriteLine(j);catch. 专业.专注.Console.WriteLine(你输入的不是数字或超出整数的表示围,请重新输入);8、编写一个控制台应用程序,求 1000 之的所有“完数” 。所谓“完数”是指一个数恰好等于它的所有因子之和。例如, 6 是完数,因为 6=1+2+3。【解答】using System;using System.Collections.Generic;using System.Text;namespace completeNumberclass Programstatic void Main(string args)for (int i = 2

12、; i = 1000; i+)int s = 1;string str = 1;for (int j = 2; j = (int)Math.Sqrt(i); j+)if (j * (i / j) = i)if (j != i / j)s += j + i / j;str += string.Format(+0+1, j, i / j);elses += j;str += string.Format(+0, j);if (s = i) Console.WriteLine(0=1, i, str);Console.ReadLine();. 专业.专注.9、错误和异常有什么区别,为什么要进行异常处理

13、,用于异常处理的语句有哪些?【解答】错误是指在执行代码过程中发生的事件,它中断或干扰代码的正常流程并创建异常对象。当错误中断流程时,该程序将尝试寻找异常处理程序(一段告诉程序如何对错误做出响应的代码) ,以帮助程序恢复流程。换句话说,错误是一个事件,而异常是该事件创建的对象。当使用短语“产生异常”时,表示存在问题的方法发生错误,并创建异常对象(包含该错误的信息及发生的时间和位置)来响应该错误。导致出现错误和随后异常的因素包括用户错误、资源失败和编程逻辑失败。这些错误与代码实现特定任务的方法有关,而与该任务的目的无关。如果不进行异常处理,即不对错误做出响应,程序的健壮性就会大打折扣,甚至无法保证

14、正常运行,所以必须要进行异常处理。用于异常处理的语句有:try-catch语句、 try-catch-finally语句、 throw 语句。第3章作业及答案本章作业题目:P64 1、2、 41、 C#语言中的数组类型有何特点?【解答】1) 数组一般用于存储同一种类型的数据,包括Object类型。2) 数组是一种引用类型,而不是值类型。3)C#中除了可以有一维数组、多维数组外,还有交错型数组。2、泛型和非泛型的主要区别是什么?为什么说使用泛型比使用对应的非泛型效率高?【解答】泛型是数据类型的一种通用表示形式,它可以表示任何一种数据类型。泛型(Generic )是具有占位符(类型参数)的类、结构

15、、接口和方法,它与普通类的区别是泛型多了一个或多个表示类型的占位符,这些占位符用尖括号括起来。占位符表示某种类型,这种类型在创建泛型类的实例时才用实际类型来替换。定义一个类或者方法时,可以用泛型占位符代表任何一种类型,而在引用时再指定具体类型。当代码调用泛型类或方法时,C#编译器会自动将定义的泛型转换为引用代码中指定的类型,从而大大简化了程序员编写代码的复杂度。另外,由于占位符可以代表任何一种类型,因此在方法中只定义一次类型就能实现所有类型的引用。3、编写一个控制台应用程序,计算1 xx2x3x4L( 1)( n 1) xn2!3!4!n!- 8要求精度为10。using System;cla

16、ss Test3public static void Main()int n = 50;double x = 3;double s = 0;. 专业.专注.double a = 1;for (int i = 1; i = n; i+)a *= i;s += Math.Pow(-1, i + 1) * Math.Pow(x, i) / a;Console.WriteLine(n=0,s=1:0.00000000, n, s);4、编写一个控制台应用程序,接收一个长度大于3 的字符串,完成下列功能。( 1)输出字符串的长度。( 2)输出字符串中第一个出现字母a 的位置。( 3)在字符串的第 3 个

17、字符后面插入子串“ hello ”,输出新字符串。( 4)将字符串“ hello ”替换为“ me”,输出新字符串。( 5)以字符“ m”为分隔符,将字符串分离,并输出分离后的字符串。【解答】【解答】using System;class Test4public static void Main()string str = ;while (str.Length -1)Console.WriteLine(第一个出现字母a 的位置是: 0, i);elseConsole.WriteLine(字符串中不包含字母a。 );/( 3)string str1 = str.Insert(3, hello);

18、/在第 3 个(初始序号为)字符前插入helloConsole.WriteLine(插入 hello后的结果为:0, str1);/( 4). 专业.专注.string str2 = str1.Replace(hello, me);Console.WriteLine(将 hello替换为 me后的结果为:0, str2);/ ( 5)string arr = str2.Split(m);Console.WriteLine( 以 m为分隔符分离后的字符串有: ); for (int j = 0; j arr.Length; j+)Console.WriteLine(arrj);第4章作业及答案本

19、章作业题目:P79 1 、 2、 41、编写一个控制台应用程序,完成下列功能。( 1)创建一个类,用无参数的构造函数输出该类的类名。( 2)增加一个重载的构造函数, 带有一个 string 类型的参数, 在此构造函数中将传递的字符串打印出来。( 3)在 Main 方法中创建属于这个类的一个对象,不传递参数。( 4)在 Main 方法中创建属于这个类的另一个对象,传递一个字符串“This is a string.”。( 5)在 Main 方法中声明类型为这个类的一个具有5 个对象的数组, 但不要实际创建分配到数组里的对象。( 6)写出运行程序应该输出的结果。【解答】using System;cl

20、ass Test1public Test1()Console.WriteLine(this);public Test1(string str)Console.WriteLine(str);public static void Main()Test1 t1 = new Test1();Test1 t2 = new Test1(This is a string.);Test1 t3 = new Test15;输出结果:. 专业.专注.Test1This is a string.2、编写一个控制台应用程序,定义一个类 MyClass,类中包含有 public 、private 以及 protecte

21、d 数据成员及方法。然后定义一个从 MyClass 类继承的类 MyMain,将 Main 方法放在 MyMain 中,在 Main 方法中创建 MyClass 类的一个对象,并分别访问类中的数据成员及方法。要求注明在试图访问所有类成员时哪些语句会产生编译错误。【解答】using System;class MyClasspublic int i;private int j;protected int k;public void method1()Console.WriteLine(public method.);private void method2()Console.WriteLine(p

22、rivate method.);protected void method3()Console.WriteLine(protected method.);class MyMain : MyClasspublic static void Main()MyClass t = new MyClass();Console.WriteLine(i=0, t.i);Console.WriteLine(j=0, t.j);/ 会出现编译错误,私有成员不允许在其它类中访问Console.WriteLine(k=0, t.k);/ 会出现编译错误,应该创建MyMain 的对象,然/后通过 MyMain 的对象访

23、问t.method1();t.method2();/ 会出现编译错误,私有的方法不允许在其它类中调用t.method3();/ 会出现编译错误,应该创建MyMain的对象,然后通过MyMain 的/ 对象调用该方法3、创建一个类包含有 protected 数据。在相同的文件里创建第二个类,用一个方法操纵第一个类里的 protected 数据。【解答】. 专业.专注.using System;class Class1protected int i = 5;protected void MyMethod()Console.WriteLine(protected method.);class Cla

24、ss2 : Class1private void NewMethod()Console.WriteLine(this.i);this.i += 10;Console.WriteLine(this.i);public static void Main()Class2 t = new Class2();t.NewMethod();4、结构和类的区别是什么?【解答】1) 结构是一个值类型,保存在栈上,而类是一个引用类型,保存在受管制的堆上。2) 对结构中的数据进行操作比对类或对象中的数据进行操作速度要快。3) 一般用结构存储多种类型的数据,当创建一个很多类或对象共用的小型对象时,使用结构效率更高。第

25、5章作业及答案本章作业题目:P101 1 、 3、41、简要回答下列问题。( 1)举例说明new关键字可用于哪些方面?( 2) sealed 关键字的作用是什么?什么情况下需要使用sealed 关键字?( 3)哪些关键字可以用于版本控制?【解答】1) 在 C#中, new关键字可用作运算符或修饰符。作为运算符用于在堆上创建对象和调用构造函数。作为修饰符用于隐藏基类成员的继承成员。2)在类声明中使用sealed 修饰符可防止其它类继承此类。在方法声明中使用sealed 修饰符可防止扩充类重写此方法。sealed修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永.

26、 专业.专注.远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。3) override 关键字和 new 关键字均可用于版本控制。在 C#中,默认情况下方法不是虚拟的。 若要使方法成为虚拟方法, 必须在基类的方法声明中使用virtual修饰符。然后,派生类可以使用override关键字重写基类中的虚拟方法,或使用new 关键字隐藏基类中的虚拟方法。如果 override 关键字和 new 关键字均未指定,编译器将发出警告,并且派生类中的方法将隐藏基类中的方法。2、简要回答抽象类和接口的主要区别。【解答】抽象类和接口的一个主要差别是:类可以实现多个接口,但仅能

27、从一个抽象类或任何其它类型的类继承。3、编写一个控制台应用程序,完成下列功能,并回答提出的问题。( 1)创建一个类 A,在构造函数中输出“ A”,再创建一个类 B,在构造函数中输出“ B”。( 2)从 A 继承一个名为 C 的新类,并在 C 创建一个成员 B。不要为 C 创建构造函数。( 3)在 Main 方法中创建类 C 的一个对象,写出运行程序后输出的结果。( 4)如果在 C 中也创建一个构造函数输出“ C”,整个程序运行的结果又是什么?【解答】using System;public class Apublic A()Console.WriteLine(A);public class Bp

28、ublic B()Console.WriteLine(B);public class C : AB newb = new B();class MainClasspublic static void Main()C newc = new C();Console.ReadLine();输出结果:. 专业.专注.BA如果在 C 中也创建一个构造函数输出“C”,即添加:public C()Console.WriteLine(C);则整个程序运行的结果为:BAC4、编写一个控制台应用程序,完成下列功能,并写出运行程序后输出的结果。( 1)创建一个类A,在 A 中编写一个可以被重写的带int类型参数的方法

29、MyMethod,并在该方法中输出传递的整型值加10 后的结果。( 2)再创建一个类B,使其继承自类A,然后重写 A 中的 MyMethod方法,将 A 中接收的整型值加50,并输出结果。( 3)在 Main 方法中分别创建类 A 和类 B 的对象,并分别调用 MyMethod 方法。【解答】using System;public class Apublic virtual void MyMethod(int num)num += 10;Console.WriteLine(num);public class B : Apublic override void MyMethod(int num)

30、num += 50;Console.WriteLine(num);class MainClasspublic static void Main()A newa = new A();newa.MyMethod(2);B newb = new B();newb.MyMethod(2);Console.ReadLine();. 专业.专注.输出结果:12525、假设 Node类的每一个节点包括有两个字段:m_data(引用节点的数据)和m_next(引用列表中的下一项)。这两个字段都是由构造函数方法设置的。该类有两个功能,第一个功能是通过名为Data 和 Next 的只读属性访问m_data 和 m

31、_next 字段。第二个功能是对System.Object的 ToString虚拟方法进行重写。试分别用类和泛型两种方法编写程序实现上述功能。【解答】using System;class NodeObject m_data;Node m_next;public Node(Object data, Node next)m_data = data;m_next = next;/ 访问结点数据public Object Dataget return m_data; / 访问下一个结点public Node Nextget return m_next; / 获取结点数据描述public overrid

32、e String ToString()return m_data.ToString();/ 链表结点类的泛型定义class NodeT m_data; Node m_next;public Node(T data, Node next)m_data = data;. 专业.专注.m_next = next;/ 访问结点数据public T Dataget return m_data; set m_data = value; / 访问下一个结点public Node Nextget return m_next; set m_next = value; / 获取结点数据描述public overr

33、ide String ToString()return m_data.ToString();/ 使用结点类型或泛型结点类型class LinkedListstatic void Main(string args)/ 创建整数链表/Node head = new Node(5, null);/head = new Node(10, head);/head = new Node(15, head);/ 遍历链表求整数和/Int32 sum = 0;/for (Node current = head; current != null;/ current = current.Next)/ sum +=

34、 (Int32)current.Data;/输出结果/Console.WriteLine(Sum of nodes = 0, sum);/ 用泛型创建整数链表Node head = new Node(5, null);head = new Node(10, head);head = new Node(15, head);/ 遍历求和Int32 sum = 0;. 专业.专注.for (Node current = head; current != null;current = current.Next)sum += current.Data;/ 输出Console.WriteLine(Sum

35、of nodes = 0, sum.ToString();第6章作业及答案本章作业题目:P152 1 、 4、 5容易出错的题目:第 1 题的( 1)空,很容易填成“Enable ” .第 1 题的( 4)空,很容易填成“checked ” .1、填空题( 1)使控件是否可以对用户交互做出响应的属性是(Enabled )。( 2)控制控件是否显示的属性是(Visible )。( 3)若要在文本框中输入密码,常指定(PasswordChar )属性。( 4)若某复选框某时刻【 CheckState 】属性的值为Indeterminate,则其属性 【 Checked】的值为 ( true )。(

36、 5)使用( GroupBox)或( Panel )控件可以将多个RadioButton控件分为两个单选组。( 6)若不希望用户在ComboBox控件中编辑文本,则应将属性(DropDownStyle )的属性值设置为DropDownList 。2、简要介绍TextBox 控件、 MaskedTextBox 控件和 RichTextBox控件的使用场合。【解答】TextBox 控件一般用于单段文本的编辑,可以设置为单行或多行的输入模式,也可以用作密码的输入; MaskedTextBox 控件主要用于特定格式的单段文本编辑,在输入文本不符合格式要求的将会触发其MaskInputRejected事件; RichTextBox控件除了具有TextBox 的一般文本编辑功能外,还可以进行多段文本的高级编辑功能,如改变文本、段落的显示格式、在文本中查找特定字符和字符串以及与Rtf 文件的交互等。3、简要说明CheckBox 控件和 RadioButton控件的区别。【解答】CheckBox 控件可为用户提供选择功能,常用的是二选一的选择,如“真/ 假”或“是 / 否”;但该控件也可以通过属性的设置作三选一的选择。每一个CheckBox 所代表的选择都是独立的,若有多个CheckBox 控件构成一组选项时,则可以多个同时被选中,相互之间不影响,即复选。RadioButt

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1