《c#net程序设计案例教程》课后习题参考答案.docx
《《c#net程序设计案例教程》课后习题参考答案.docx》由会员分享,可在线阅读,更多相关《《c#net程序设计案例教程》课后习题参考答案.docx(20页珍藏版)》请在冰豆网上搜索。
《c#net程序设计案例教程》课后习题参考答案
《C#.NET程序设计案例教程》课后习题参考答案
习题1
一、选择题
1.在.NET中不能使用的语言是(B)。
A.C#B.Pascal
C.VBD.VC++
2.(A)可以帮助用户可视化的程序设计界面。
A.工具箱 B.类视图
C.解决方案资源管理器 D.动态帮助
3.导入命名空间使用关键字是(B)。
A.Main B.using
C.System D.Console
二、填空题
1.在C#程序中,程序的执行总是从(Main)方法开始的。
2.在C#程序中,单行注释用(//)引导。
3.在C#程序中,注释分为单行注释和(块注释)。
4.关键字class的含义是(类)。
5.要添加控件到窗体中,应该使用(Windows窗体设计器)设计窗口。
6.要修改项目的属性,必须在(解决方案资源管理器)设计窗口中选择项目。
7.要修改对象的属性,应该使用(属性)设计窗口。
三、问答题
1.简述VisualStudio2010的安装过程。
答:
1、获取VisualStudio2010的安装文件
2、启动VisualStudio2010的安装程序
3、单击第一个安装选项“安装VisualStudio2010”,弹出图1-2所示的“VisualStudio2010安装向导”界面。
4、单击“下一步”按钮,弹出图1-3所示的“VisualStudio2010安装程序起始页”。
5、选中“我已阅读并接受许可条款”按钮,单击“下一步”按钮,弹出图1-4所示的“VisualStudio2010安装程序选项页”,用户可以选择要安装的功能及安装路径,一般使用默认设置即可。
6、选择好产品安装路径后,单击“安装”按钮,进入图1-5所示的“VisualStudio2010安装程序安装页”界面,显示正在安装的组件。
7、安装完毕后,单击“下一步”按钮,弹出图1-6所示的“VisualStudio2010安装程序完成页”界面。
8、单击“安装文档”按钮,可以安装VisualStudio的本地帮助文档MSDN,弹出如图1-7所示的“HelpLibrary管理器—库位置”界面。
9、设置库位置后,单击“确定”按钮,弹出如图1-8所示的“HelpLibrary管理器—安装内容”界面。
10、10、根据需要点击需要安装的内容后面的“添加”按钮后,单击“更新”按钮,开始“更新本地库”,更新完成后点击“完成”按钮,弹出如图1-9所示的“HelpLibrary管理器安装完成页”界面。
11、11、单击“退出”按钮完成帮助文档库的安装,弹出如图1-10所示的“VisualStudio2010安装程序主页面”。
12、12、单击“退出”按钮,完成VisualStudio开发环境和帮助文档库的安装。
2.VisualStudio2010开发环境的主要组成部分有哪些?
答:
VisualStudio2010开发环境的主窗口由标题栏、菜单栏、标准工具栏、代码编辑器/Windows窗体设计器以及停靠或自动隐藏在左侧、右侧、底部的工具箱、解决方案资源管理器、属性窗口等共同组成。
习题2
一、选择题
1、以下变量命名正确的是(C)。
A.7strB.int
C._stu_idD.integer
2.表达式“100”+”88”=(D)
A.88100B.188
C.10088D.10088
3、Math.Sqrt(9)的结果是(B)
A.9B.3
C.09D.9.0
4、把字符串strA中的字符’f’,都替换成’F’,正确的代码是(C)
A.string.replace(‘f’,’F’);B.strA.replace(‘f’,’F’);
C.strA.Replace(‘f’,’F’);D.strA.Replace(‘F’,’f’);
5、下列哪个转换时属于隐式转换的(A)
A.inti=’f’;B.intj=20F
C.inta=100LD.charc=”H”;
二、计算题
1.表达式100%3的结果是____________1
2.表达式a=5*(b=3)的值是____________15
3.表达式5>8||8>5的值是____________true
4.表达式18.9%2.4的结果是____________2.1
5.表达式‘a’*’6’的结果是____________5238
三、编程题
1.开发一个windows窗体应用程序,实现以下功能:
在一段给定的字符串中,查找出指定字母的位置。
比如在字符串中”abcdefg”,查找出字符’c’的位置是2。
编程思路:
利用字符串对象的的IndexOf方法
2.开发一个windows窗体应用程序,实现以下功能:
输入2个数,计算并显示出这2个数的最大值。
编程思路:
利用Math类的max方法。
3.开发一个windows窗体应用程序,实现以下功能:
输入以摄氏温度,输出对应的华氏温度值。
摄氏温度和华氏温度的转化公式如下:
5(tºF-50)=9(tºC-10º),tºF——华氏温度,tºC——摄氏温度。
编程思路:
表达式计算
4.开发一个windows窗体应用程序,实现以下功能:
输入一个字符,检查判断输入的是数字还是字母。
如果输入的是字母,则显示“您输入的是字母X,其ASCII码是XX”;如果输入的是数字,则显示“您输入的是数字X,,其ASCII码是XX”。
如果两者都不是则显示“输入的是既非数字也非字母!
”
编程思路:
利用if..else语句
习题3
一、选择题
1.假设有三个文本框textBox1、textBox2和textBox3,其中textBox3.Text值为空,textBox1.Text值为8,textBox2.Text值为10,则执行语句:
“textBox3.Text=textBox1.Text+textBox2.Text;”后,textBox3.Text的值为:
(C)。
A.108B.18
C.810D.出错
2.分析以下程序段的执行结束后,i和j的值分别为:
(B)
inti=1,j=1;
for(;j<10;j++)
{if(j>5)break;
if(j%2!
=0)
{j+=3;continue;}
j-=1;
}
A.2,9 B.1,9
C.1,8 D.1,10
3.将命题“z大于x,y中间的一个”用C#表达式表示为:
(B)。
A.z>xandz>y B.z>xorz>y
C.z>x&&z>y D.z>x||z>y
4.以下程序段执行后,Label1的显示结果为:
(A)
inti,sum;
sum=0;
for(i=2;i<=10;i=i+1)
{
if(i%2!
=0&&i%3==0)
sum=sum+i;
}
Label1.Text=sum.ToString();
A.12 B.30C.24 D.18
5.有以下代码段:
inti=0,s=0;
for(;;)
{
if(i==3||i==5)continue;
if(i==6)break;
i=i+1;
s=s+i;
}
循环完成后,s的值是(D)
A.10 B.7C.21 D.程序进入死循环
6.有以下代码段:
intk=5,n=0;
while(k>0)
{
switch(k)
{
case1:
n+=k;break;
case2:
break;
case3:
n+=k;break;
default:
break;
}
k=k-1;
}
则执行代码段后,n的值是(B)
A.0 B.4C.6 D.7
二、填空题
1.条件“金额大于等于500,小于1000”的表达式为(金额>=500&&金额<1000)。
2.在C#程序中,要设置Label控件的大小不随着内容而改变,应修改(AutoSize)属性的值为False。
3.按键盘上的(F7)键可以进入代码编辑窗口。
4.C#中的4种循环结构是(for)、(while)、(do…while)和(foreach)。
5.专门用于集合元素访问的循环语句是(foreach)。
6.VisualStudio提供的(try)方法就是专门用于人为引发异常的。
。
7.(show)方法用于显示消息框。
8.关闭应用程序的语句是(this.Close();)。
三、问答题
1.简述if语句嵌套时,if与else的配对规则。
答:
else总是与其前面最近且尚未配对的在同一复合语句中的if
2.多分支条件语句中的控制表达式可以是哪几种数据类型?
答:
表达式的结果必须是整数、字符或枚举量值
3.多分支条件语句中,case子句中在什么情况下可以不使用break语句?
答:
break语句是用来执行完一个case分支后,然后跳出switch语句;而在一些特殊的情况下,比如多个不同的case值要执行一组相同的操作的时候,这时可以省略break语句。
4.while语句和do…while语句有何区别?
答:
do-while循环就是先执行再判断,while循环是先判断后执行。
5.异常处理有哪几种常用的语法格式?
答:
try语句有以下三种可能的形式:
(1)try…catch语句:
一个try块后接一个或多个catch块。
(2)try…finally语句:
一个try块后接一个finally块。
(3)try…catch…finally:
一个try块后接一个或多个catch块,后面再跟一个finally块。
习题4
一、选择题
1.在关键字public后面定义的成员为类的(B)成员。
A.私有 B.公有C.保护 D.任何
2.如果不带修饰符,C#中类成员被默认声明成(C)。
A.public B.protectedC.private D.static
2.可以在一个类中定义多个同名的方法,但只有使用的参数类型或者参数个数不同,编译器便知道在何种情况下应该调用哪个方法,这是(D)。
A.虚方法 B.运算符重载
C.抽象方法 D.方法重载
3.关于构造函数,下列说法错误的是(B)。
A.C#中对对象进行初始化的方法叫构造函数。
B.构造函数可不与类同名,可以用户自己命名。
C.如果一个类没有声明任何实例构造函数,则系统会自动提供一个默认构造函数。
D.构造函数在类的声明中,可以有函数名相同,但参数个数不同的多种形式。
4.下列关于C#中继承的描述,错误的是(A)。
A.一个子类可以有多个父类。
B.通过继承可以实现代码重用。
C.派生类还可以添加新的特征或者是修改已有的特征以满足特定的要求。
D.继承是指基于已有类创建新类的语言能力。
5.可以在一个类中定义多个同名的方法,但只有使用的参数类型或者参数个数不同,编译器便知道在何种情况下应该调用哪个方法,这是(D)。
A.虚方法 B.运算符重载
C.抽象方法 D.方法重载
6.关于构造函数,下列说法错误的是(D)。
A.默认构造函数定义了对象的默认状态。
B.非默认构造函数将根据传入的参数来初始化对象的数据。
C.如果没有为类定义默认构造函数,编译器将自动为类创建一个默认构造函数。
D.非默认构造函数应当总是包含对象的默认状态。
7.接口是一种引用类型,在接口中可以声明(A),但不可以声明公有的域或私有的成员变量。
A.方法、属性、索引器和事件
B.方法、属性信息、属性
C.索引器和字段
D.事件和字段
8.声明一个委托publicdelegateintmyCallBack(intx);则用该委托产生的回调方法的原型应该是(B)。
A.voidmyCallBack(intx)
B.intreceive(intnum)
C.stringreceive(intx)
D.不确定的
二、填空题
1.面向对象程序设计具有(封装)、(继承)和(多态)等三个基本特征。
2.(字段)是类定义中的数据,也叫类定义中的变量。
3.(方法)实质上就是函数,通常用于对字段进行计算和操作,即对类中的数据进行操作。
4.方法参数传递按性质可以分为(按值传递)和(按引用传递)两种。
5.构造函数是一种特殊的方法成员,其主要作用是在创建对象时(初始化新对象)。
6.声明静态成员需要使用(static)修饰符。
7.在进行类定义时不需要编写代码就可以包含另一个类定义的数据成员、方法成员等的特征,称为类的(继承)。
8.委托是一种引用数据类型,派生于.NETFramework中的(Delegate)类。
三、问答题
1.简述类与对象的关系。
答:
类是对象的抽象描述和概括,例如:
车是一个类,自行车、汽车、火车也是类,但是自行车、汽车、火车都属于车这个类的子类,因为它们有共同的特点就是都是交通工具,都有轮子,都可以运输。
而汽车有颜色、车轮、车门、发动机等特征,这是和自行车、火车所不同的地方,是汽车类自己的属性,也是所有汽车共同的属性,所以汽车也是一个类,而具体到某一辆汽车,它有具体的颜色、车轮、车门、发动机等属性值,因此某辆汽车就是一个对象。
类是抽象的概念,对象是具体的概念,在软件设计中很容易区分类和对象。
假设软件中的按钮是一个类,按钮类具有长度、宽度、位置、颜色等属性,具有单击、双击、移动等行为,当所设计的一个具体的按钮具有特定的长度、宽度、位置、颜色等属性值,具有单击、双击、移动时所发生的具体行为,那么这时就构成了一个按钮对象。
2.属性是类的数据成员吗?
什么是方法?
C#允许在类定义外部声明方法吗?
答:
属性是类的数据成员。
方法用来完成类或对象的行为,在面向对象编程语言中,类或对象是通过方法来与外界交互的,所以方法是类与外界交互的基本方式。
方法通常是包含解决某一特定问题的语句块,方法必须放在类定义中,方法同样遵循先声明后使用的原则。
C#不允许在类定义外部声明方法
3.在方法的调用中,基本数据类型作为参数默认是按什么方式传递?
类对象作为参数默认是按什么方式传递的?
类对象可以按值方式传递吗?
基本数据类型参数按引用传递时,应该怎么做?
参数按值传递与按引用传递的区别是什么?
方法的参数传递按照性质可分为按值传递与按引用传递。
参数按值的方式传递是指当把实参传递给形参时,是把实参的值复制给形参,实参和形参使用的是内存中两个不同的值,所以这种参数传递方式的特点是形参的值发生改变时,不会影响到实参的值,从而保证了实参数据的安全。
基本类型(包括string与object)的参数在传递时默认为按值传递。
一个方法只能返回一个值,但实际应用中常常需要方法能够修改或返回多个值,这时只靠return语句显然是无能为力的。
如果需要方法返回多个值,就可以使用按引用传递参数的方式实现这种功能。
按引用传递是指实参传递给形参时,不是将实参的值复制给形参,而是将实参的引用传递给形参,此时,实参与形参使用的是同一个内存地址中的值。
这种参数传递方式的特点是形参的值发生改变时,同时也改变实参的值。
基本类型参数按引用传递时,形参实际上是实参的别名。
基本类型参数按引用传递时,实参与形参前均须使用关键字ref。
4.重载方法的基本要求是什么?
C#中的静态方法应该怎样调用?
方法重载有两点要求:
(1)重载的方法名称必须相同;
(2)重载方法的形参个数或类型必须不同,否则将出现“已经定义了一个具有相同类型参数的方法成员”的编译错误。
静态方法属于类本身,只能使用类调用,不能使用对象调用。
5.什么是类的继承?
怎么定义派生类?
继承就是在已有类的基础上建立新的类,新的类既具备原有类的功能和特点,又可以将这些功能在原有基础上进行拓展。
由于新的类是由原来的类发展而来,所以又被称为原有类的派生类(子类),而原有类就是新类的基类(父类)。
定义一个继承于基类的派生类的语法格式如下:
【访问修饰符】class派生类名称:
基类名称
{
//派生类的类体
}
其中,访问修饰符可以是public、protected和private,通常都使用public以保证类的开放性,并且public可以省略,因为类定义的访问控制默认是public。
“:
基类名称”表示所继承的类。
定义的派生类默认继承了基类的所有成员,包括变量和方法(构造函数和析构函数除外),基类中用private访问修饰符限制的成员不能被继承。
6.什么是多态性?
多态性有何作用?
多态性可以简单地概括为“一个接口,多种方法”,它在程序运行的过程中才决定调用的方法,多态性是面向对象编程的核心概念。
多态使得子类(派生类)的实例可以直接赋予基类的对象(不需要进行强制类型转换),然后直接就可以通过这个对象调用子类(派生类)的方法。
多态则是为了实现另一个目的——接口重用,因为接口是最耗费时间的资源,实质上设计一个接口要比设计一堆类要显得更有效率。
习题5
一、选择题
1.在C#.Net中,用来创建主菜单的对象是(C)。
A.MenuB.MenuItemC.MenuStripD.Item
2.下面所列举的应用程序中,不是多文档应用程序的是(D)
A.WordB.ExcelC.PowerPointD.记事本
3.加载窗体时触发的事件是(B)。
A.ClickB.LoadC.GotFoucsD.DoubleClick
4..建立访问键时,需在菜单标题的字母前添加的符号是(D)。
A.!
B.#C.$D.&
5..使用Dirctory类的下列方法,可以获取指定文件夹中的文件的是(B).
A.Exists()B.GetFiles()C.GetDirectories()D.CreateDirectory()
二、填空题
1.在C#Net中,窗体父子关系通过(MDI窗体)窗口来创建。
2.根据Windows窗体的显示状态,可以分为(模式)窗体和(非模式)窗体。
3.将文本框设置为只读,可以通过修改(ReadOnly)属性实现。
4.(MenuStrip)控件又称为菜单控件,主要用来设计程序的菜单栏。
5.计时器控件每隔一定的时间间隔引发一次(Tick)事件。
6.ProgressBar控件又称为(进度条)控件。
7.将文本框控件设置为密码文本框,可以通过修改(PassWordChar)属性实现。
三、问答题
1.Windows应用程序的菜单通常由哪些部分组成?
答:
MenuStrip控件,又称为菜单控件,它主要用来设计程序的菜单栏,C#中的MenuStrip控件支持多文档界面、菜单合并、工具提示和溢出等功能,开发人员可以通过添加访问键、快捷键、选中标记、图像和分隔条来增强菜单的可用性和可读性。
MenuStrip控件主要用于在程序窗体中显示菜单,其中菜单标题项的快捷键是通过其Text属性中的“&”字符进行设置的,当菜单处于打开状态时,可以通过按下Alt键和相应的字母打开相应的菜单项。
而菜单项的快捷键通过设置菜单项的Shortcut属性进行设置,例如“红”菜单项对应的“Ctrl+D”,用户无需打开菜单,直接按Ctrl+R键时,就相当于单击该菜单项。
ContextMenuStrip控件,又称为快捷菜单控件,它用来表示快捷菜单。
2.在实际应用中,菜单可以分为哪两种形式?
在C#中设计菜单使用哪两种控件?
请简述其设计步骤。
答:
Windows的菜单主要有下拉式菜单和弹出式快捷菜单两种类型。
在C#中设计菜单时分别使用MenuStrip控件和ContextMenuStrip控件。
3.简述工具栏与菜单共享代码的方法。
答:
程序中工具栏按钮的功能与主菜单中的命令项相对应,因此在功能实现上采用直接调用相应主菜单项单击事件代码的方式实现,例如“menuOO_Click(sender,e);”即调用主菜单中的菜单项的单击事件。
4.简述状态栏面板StatusStrip的主要属性及作用。
答:
StatusStrip控件,又称为状态栏控件,它通常放置在窗体的最底部,用于显示窗体上一些对象的相关信息,或者可以显示应用程序的信息。
StatusStrip控件由ToolStripStatusLabel对象组成,每个这样的对象都可以显示文本、图像或同时显示这二者,另外,StatusStrip控件还可以包含ToolStripDropDownButton、ToolStripSplitButton和ToolStripProgressBar等控件。
5.简述模式窗体与非模式窗体的区别。
答:
模式窗体就是使用ShowDialog方法显示的窗体,它在显示时,如果作为激活窗体,则其它窗体不可用。
只有在将模式窗体关闭之后,其它窗体才能恢复可用状态。
非模式窗体就是使用Show方法显示的窗体,一般的窗体都是非模式窗体。
非模式窗体在显示时,如果有多个窗体,用户可以单击任何一个窗体,单击的窗体将立即成为激活窗体并显示在屏幕的最前面。
6.简述KeyPress事件与KeyDown、KeyUp事件的主要不同点。
答:
C#主要为用户提供了三种键盘事件,按下某个ASCII字符键时发生KeyPress事件,按下任意键时发生KeyDown事件和释放键盘上任意键时发生KeyUp事件。
只有获得焦点的对象才能够接受键盘事件。
只有当窗体为活动窗体且其上所有控件均未获得焦点时,窗体才获得焦点。
这种情况只有在空窗体和窗体上的控件都无效时才发生。
但是,如果将窗体上的KeyPreview属性设置为True,则窗体就会在控件识别其键盘事件之前抢先接受这些键盘事件。
键盘事件彼此之间并不相互排斥,按下一键时产生KeyPress和KeyDown事件,放开该键时产生一个KeyUp事件,但应注意KeyPress事件并不能识别所有的按键。
习题6
一、选择题
1.C#Winform编程对文件夹操作,通常需要引入命名空间(C)。
A.using System.IOB.using System.IO
C.using System.IOD.System.Data.OleDb
实现递归删除文件夹目录及文件,下列程序中
publicstaticvoidDeleteFolder(stringdir)
{
if(Directory.___2____(dir))//如果存在这个文件夹删除之
{
foreach(stringdin__3___.GetFileSystemEntries(dir))
{
if(File.Exists(d))
File.____4_____(d);