您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 精通C40程序设计第1-14章习题答案段付保段赵磊
第1章习题答案一、选择题(1)D(2)A(3)C(4)D(5)D二、简答题(1)参考第1.1.3节内容。(2)C#集成开发环境中主要有起始页、设计器视图与代码视图、解决方案资源管理器与类视图、工具箱与服务器资源管理器、属性与动态帮助等。(3)命名空间既是VisualStudio.NET提供系统资源的分层组织方式,也是分层组织程序的方式。命名空间有两种:一种是系统命名空间,一种是用户自定义命名空间。第2章习题答案一、选择题(1)AC(2)B(3)BC(4)D(5)A(6)B(7)ABCD(8)B(9)A(10)D二、简答题(1)答:C#中变量命名规则如下:①变量名的第一个字符必须是字母或下划线,其余字符必须是字母、数字或下划线。②变量名不能是C#的关键字或库函数名。(2)答:值类型变量直接包含其本身的数据,因此每个值类型变量本身就包含有赋给它的值。与值类型不同,引用类型变量本身不包含数据,只是存储对数据的引用,数据保存在内存的其他位置。(3)答:结构与枚举都属于值类型。结构类型可以用来处理一组类型不同、内容相关的数据。枚举类型是由用户定义的一组整型符号常量,使用枚举可以将一组相关的有限常量组织在一起,保证变量只能具有预定的值。第3章习题答案一、选择题(1)A(2)D(3)C(4)D(5)A(6)A(7)B(8)B二、简答题(1)描述一下C#中索引器的实现过程,是否只能根据数字进行索引?答:可以用任意类型实现索引器。(2)解释类的静态成员和非静态成员的区别,说明如何引用静态成员和非静态成员。答:类的静态成员是类的所有实例公有的,使用类名.成员名进行引用;类的非静态成员是类的某个实例所有的,使用对象名名.成员名进行引用。(3)说明String类和StringBuilder类的区别。答:String类在进行字符串运算时(如赋值、字符串连接等)会产生一个新的字符串实例,需要为新的字符串实例分配内存空间,相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,且操作次数非常多,则可以使用StringBuilder类,例如,当在一个循环中将许多字符串连接在一起时。StringBuilder类在原有字符串的内存空间上进行操作,使用StringBuilder类可以提升性能。第4章习题答案一、选择题(1)D(2)A(3)A(4)A(5)D(6)B(7)D(8)B二、简答题(1)C#中的委托是什么?事件是不是一种委托?答:委托可以把一个方法作为参数代入另一个方法,委托可以理解为指向一个函数的引用。是,事件是一种特殊的委托。(2)override和重载的区别是什么?答:重载是方法的名称相同,参数或参数类型不同,进行多次重载以适应不同的需要。override是在派生类进行基类中函数的重写,为了适应派生类的需要。(3)概述序列化的原理和作用。序列化:将对象转换为另一种媒介传输的格式过程。如,序列化一个对象,用Http协议通过internet在客户端和服务器之间传递该对象,在另一端用反序列化从该流中重新得到对象。第5章习题答案1.简述为什么要进行异常处理。答:在程序运行过程中,经常可能发生各种不可预测的意外情况,如被零除情况或内存不足警告等意外情况,也就是异常。异常处理是为了识别和捕获运行时的错误。当程序引发异常时,如果没有适当的异常处理机制,程序将会终止,并使所有已分配的资源保持不变,这样会导致资源泄露。2.简述逐语句和逐过程两种调试方式的区别。答:逐语句和逐过程是两种不同的单步调试的方式。“逐语句”和“逐过程”的差异仅在于它们处理函数调用的方式不同。这两个命令都指示调试器执行下一行的代码。如果某一行包含函数调用,“逐语句”仅执行调用本身,然后在函数内的第一个代码行处停止。而“逐过程”执行整个函数,然后在函数外的第一行处停止。如果要查看函数调用的内容,请使用“逐语句”。若要避免单步执行函数,请使用“逐过程”。使用逐语句的方式进行单步调试,可以从“调试”菜单中选择“逐语句”命令,进行调试。使用逐过程的方式进行单步调试,可以从“调试”菜单中选择“逐过程”命令,进行调试。3.编写一个程序,使用两种不同类型数据进行加法运算,并使用异常处理语句捕获由于数据类型转换和算数运算错误而引发的异常。答:设计程序界面如下图。双击button1,在button1的Click事件中添加button1_Click方法,该方法的代码如下。try{doublenum1=double.Parse(textBox1.Text);doublenum2=double.Parse(textBox2.Text);doubleresult=num1+num2;textBox3.Text=result.ToString();}catch{textBox3.Text=运算错误,请输入正确的运算数字!;}使用如下下表中的Testcase测试程序。Testcase1测试程序是否能正确进行数字运算。步骤1在第一个运算数中输入“0.001”,在第二个运算数中输入“-0.00001”。步骤2单击“=”按钮,计算运算结果。步骤3检查程序的运算结果是否等于两个运算数的和“0.00099”。Testcase2测试程序是否能处理错误的运算数。步骤1在第一个运算数中输入“0.0-01”,在第二个运算数中输入“-0.00001”。步骤2单击“=”按钮,计算运算结果。步骤3检查程序的运算结果是否为“运算错误,请输入正确的运算数字!”。可以再添加一些更多的Testcase测试程序。第6章习题答案一、选择题(1)B(2)A(3)B(4)D(5)C二、简答题(1)简述下拉菜单的基本结构。答:有文字的单个命令称菜单项,顶层菜单项是横着排列的,构成了菜单栏。单击某个顶级菜单项(或菜单项)后弹出的称为一级菜单(或子菜单),它们均包含若干个菜单项。菜单项有的是变灰显示的,表示该菜单项当前是被禁止使用的。有的菜单项的提示文字中有带下划线的字母,该字母称为热键(或访问键),若是顶层菜单,可通过按“ALT+热键”打开该菜单,若是某个子菜单中的一个选项,则在打开子菜单后直接按热键就会执行相应的菜单命令。有的菜单项后面有一个按键或组合键,称快捷键,在不打开菜单的情况下按快捷键,将执行相应的命令。有的菜单项之间有一个灰色的线条,该线条称为分隔线或分隔符。(2)对话框按显示方式可分为哪几类,它们之间有何区别?答:对话框按显示方式分为模态对话框和非模态对话框。它们之间的区别是:模态对话框就是指当对话框弹出、显示的时候,用户不能单击这个对话框之外的界面区域。用户要访问界面上的其它对象,必须先关闭模态对话框。模态对话框通常用来限制用户必须完成指定的操作任务。例如,MicrosoftWord的“字体”对话框。模态对话框使用ShowDialog方法显示。非模态对话框通常用于显示用户需要经常访问的控件和数据,并且在使用这个对话框的过程中需要访问其它用户界面对象的情况。用户要访问界面上的其它对象,不必关闭非模态对话框。例如MicrosoftWord的“查找和替换”对话框。非模态对话框使用Show方法显示。三、操作题见文件夹第7章习题答案一、选择题(1)D(2)C(3)B(4)A(5)B二、简答题(1)什么是GDI+?GDI+有什么功能?GDI+(GraphicsDeviceInterfacePlus)是微软在Windows2000以后操作系统中提供的新的图形设备接口,其通过一套部署为托管代码的类来展现,这套类被称为GDI+的“托管类接口”。GDI+主要提供了绘制二维矢量图形的类,这包括存储图形基元自身信息的类(或结构体)、存储图形基元绘制方式信息的类以及实际进行绘制的类。此外,还提供了文字显示功能,可以使用各种字体、字号和样式来显示文本。(2)简述绘图的一般步骤。一般来说,GDI+绘图程序包含下面四步:第一步,创建Graphics对象。第二步,创建绘图工具并设置相应的属性。第三步,使用Graphics对象的方法进行图像绘制、文本显示等。第四步,释放Graphics对象、绘图工具等资源。(3)什么是画图工具?画图工具一般包含什么?画图工具是System.Drawing命名空间中的类,用来绘制线条和填充区域。画图工一般包含画笔和画刷。画笔的功能是用来画线,C#中用Pen类来实现画笔。画刷的功能是用来填充图形的内部,C#中用Brush类来实现画刷。三、编程绘制下面的图形(1)绘制直线、矩形、椭圆和圆弧,并设置线条颜色分别为红色、绿色、蓝色和黄色,线条宽度分别为1、2、3和4,线条类型分别为实线、点线、划线和划线点。(答案参见本章例7.2、例7.3、例7.5和例7.6)(2)用单色画刷填充矩形和多边形,并设置填充颜色分别为红色和绿色。(答案参见本章例7.11和例7.12)用渐变画刷填充椭圆和饼形,并设置颜色分别从红色水平过渡到蓝色和从绿色垂直过渡到蓝色。(答案参见本章例7.1)(3)绘制三串不同的文字,这三串文字分别为宋体、楷体和隶书,字体颜色分别为红色、绿色和蓝色,字体大小分别为10,20和30,字体样式分别为粗体、斜体和下划线。(答案参见本章例7.16)第8章习题答案一、选择题(1)B(2)C(3)D(4)A(5)D二、简答题(1)简述System.IO模型及其作用。答:System.IO模型提供了一个面向对象的方法来访问文件系统,提供了很多针对文件、文件夹的操作功能,特别是以流(Stream)的方式对各种数据进行访问,这种访问方式不但灵活,而且可以保证编程接口的统一。System.IO模型实现包含在System.IO命名空间中,该命名空间包含允许在数据流和文件上进行同步和异步读取及写入、提供基本文件和文件夹操作的各种类,即:System.IO模型是一个文件操作类库,包含的类可用于文件的创建、读/写、复制、移动和删除等操作。(2)简述System.IO模型中借助文件流进行文件操作的常用步骤。答:System.IO模型中,借助文件流进行文件操作的常用步骤是:a.用File类打开操作系统文件;b.建立对应的文件流即FileStream对象;c.用StreamReader/StreamWriter类提供的方法对文件流(文本文件)进行读写或用BinaryReader/BinaryWriter类提供的方法对文件流(二进制文件)进行读写。三、操作题见文件夹第9章习题答案1.为什么要使用多线程?多线程适用于那些应用?答:在运行一个比较耗时的任务时,如果采用采用单线程机制的话,那么主线程会不断地处理该任务,从而无暇处理用户交互的要求。。一般情况下,需要用户交互的软件都必须尽可能快地对用户的活动做出反应,以便提供更好的用户体验。有了线程的概念,操作系统在执行长时间运行的任务时,也能随时响应其他的应用程序。另外,线程允许用户使用一个应用程序(例如:任务管理器)强行终止已经“冻结”的那个应用程序。多线程适用于以下任务:通过网络进行通信的任务、执行占用长时间的操作的任务、区分具有不同优先级的任务。2.简述线程是如何创建的?怎样设置线程的优先级?答:创建线程分两步完成:首先创建线程实例,然后调用Start方法创建线程,使线程可以被CPU调度执行。创建线程实例调用Thread类的构造方法,就会实例化一个线程实例,但尚未创建实际的线程。此时,线程实例处于Unstarted状态。创建一个线程实例的常用形式为:Threadt=newThread(线程方法);线程方法必须具有如下签名:void线程方法();//无返回值,无参数或void线程方法(Objectobj);//无返回值,带有一个Object类型的参数如果在启动线程时不需要传递参数,该线程方法声明为第一种形式;如果希望在启动线程时传递参数,那么该线程方法声明为第二种形式。通常情况下,线程方法包含一个循环,循环内部实现用户希望完成的功能。当检测到逻辑表达式为false时,则退出循环并结束线程。线程方法一般定义为如下形式:void线程方法(){while(逻辑表达式){//执行线程工作}}创建线程调用已经创建的线程对象的
本文标题:精通C40程序设计第1-14章习题答案段付保段赵磊
链接地址:https://www.777doc.com/doc-2101598 .html