C#程序设计试题二及答案.docx
《C#程序设计试题二及答案.docx》由会员分享,可在线阅读,更多相关《C#程序设计试题二及答案.docx(12页珍藏版)》请在冰点文库上搜索。
C#程序设计试题二及答案
C#程序设计试题二及答案
一、选择题(每小题2分,共40分)
1.下面关于接口的说法正确的是()
⑴接口和类一样也不能进行多继承
⑵实现接口的类中不一定要定义所有接口中出现的条目
⑶派生类隐藏基类的实现,并不改变基类中的实现和接口的映射关系
⑷显示接口成员实现应该有类的实例来调用
2.下列类的定义中哪些是合法的抽象类
⑴sealedabstractclassc1{abstractpublicvoidtest(){}
⑵abstractsealedpublicvoidtest()
⑶abstractclassc1{abstractvoidtest()}
⑷abstractclassc1{abstractpublicvoidtest()}
3.在ADO.NET中,使用DataAdapter将数据源填充到DataSet,应使用下列哪个方法()。
⑴DataAdapter对象的Update方法⑵DataSet对象的Fill方法
⑶DataSet对象的Update方法⑷DataAdapter对象的Fill方法
4.面向对象编程中的“继承”的概念是指()。
⑴对象之间通过消息进行交互
⑵派生自同一个基类的不同类的对象具有一些共同特征
⑶对象的内部细节被隐藏
⑷派生类对象可以不受限制地访问所有的基类对象
5.在静态方法中可以直接访问()
⑴实例字段⑵实例方法
⑶静态字段⑷实例方法和静态方法
6.在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成()。
⑴sealed方法封闭类⑵public方法公共类
⑶virtual方法虚方法⑷override方法重载基类
7.C#程序中,可使用trycatch机制来处理程序出现的()错误。
⑴语法⑵运行 ⑶逻辑⑷拼写
8.下列()类型的对象是ADO.NET在非连接模式下处理数据内容的主要对象。
⑴Command⑵Connection
⑶DataAdapter⑷DataSet
9.应用ADO.NET访问数据时,Connection对象的连接字符串中InitialCatalog子串的含义是()。
⑴Connection对象连接到的数据库的名称
⑵Connection对象的身份验证信息
⑶Connection对象的最大连接时间
⑷Connection对象使用的缓存大小
10.Web表单中,按钮的默认事件是()。
⑴Click事件⑵Load事件
⑶Init事件⑷DbClick事件
11.关于ASP.NET窗体应用程序,下列说法_______是正确的。
⑴Web窗体是在浏览器中进行解释执行的
⑵Web窗体程序中脚本和代码必须严格分开
⑶Web窗体程序产生的HTML页面只能运行于IE浏览器
⑷Web窗体程序的代码可以使用任何一种。
NET兼容的编程语言编写
12.下面关于多态的说法正确的是()。
⑴虚方法可以被派生类中的方法重写
⑵方法重写可以重写静态方法
⑶抽象类也可以被实例化
⑷base关键字不能调用基类的构造方法
13.在编写C#程序时,当需要对一个数组中的所有元素进行处理,则使用_____循环体最好。
⑴while循环⑵foreach循环
⑶do循环⑷for循环
14.在Queue类中的Enqueue方法的作用是
⑴将队列末端元素出队列
⑵将队列前端元素出队列
⑶在队列前端压入新的元素
⑷在队列末端加入新的元素
15.在哈希表中,对象所属的哈希桶的地址是由()决定的。
⑴为该对象设置的键值
(2)该对象所属的类
⑶该对象的物理存放地址(4)该对象插入哈希表之前,哈希表内的对象个数
16.在ADO.NET中,表示程序到数据的连接的对象为
⑴Connection对象
⑵Conmand对象
⑶DataSet对象
⑷DataAdapter
17.在ADO.NET中,执行数据库的某个存储过程,则少需要创建_____并设置它们的属性,调用合适的方法。
⑴一个Comman对象和一个DataAdapter对象
⑵一个Command对象和一个Datase对象
⑶一个Connection对象和一个DataSet对象
⑷一个Connetction对象和一个Command对象
18.在System.Collection的名字空间中,下列_____类实现了一种数据结构,这种数据结构支持使用键值来索引结构中存放的对象
⑴ArrayList类⑵Stack类
⑶Hashtable类⑷Queue类
19.在C#中设计类时,如何将一个可读可写的公有属性Name修改为只读属性
⑴将Name的set块删除
⑵将Name的set块置空
⑶将Name的set块前加修饰符private
⑷将Name添加readonly修饰符
20.通过继承_____类,用户可以创建自己的异常类。
⑴System.Exception⑵System.SystemException
⑶System.ApplicationException⑷System.UserException
二、简单应用题(总计4小题,共30分)
1.写出下列程序的输出结果(6分)
publicclassA
{
publicvirtualvoidFun()
{
Console.WriteLine(“A.Fun()”);
}
}
publicclassB:
A
{
publicoverridevoidFun()
{
Console.WriteLine(“B.Fun()”);
}
}
publicclassC:
B
{
newpublicvoidFun()
{
Console.WriteLine(“C.Fun()”);
}
}
publicstaticvoidMain()
{
Aa=newB();
a.Fun();
a=newC();
a.Fun();
}
2.有一个动态的程序集Teach.Management.WebLib.Course.DAO,该命名空间下有一个接口ICourse及实现该接口的CourseDAOClass类,请采用动态反射技术实现返回该程序集的元数据CourseDAOClass类对应的接口实例对象。
(10分)
3.设计一个自定义异常类MyException.任意从键盘上输入一个人的年龄在0—120之间的数据,否则分别输出其异常信息,要求写一个控制台应用程序,采用Try-Catch-Finally异常处理机制实现上述功能。
(8分)
4.实例化一个ArrayList类后,添加三个学生姓名到该实例中。
请完成下面的一个方法,对该实例进行排序,然后输出该实例的各个元素的值,代码结构如下:
(6分)
publicstaticvoidPrintArrayListValues(IenumerablemyList)
{
…
}//形参对象myList会引用一个实例化后的ArrayList类的对象。
三、综合设计题(每小题15分,共30分)
1.现有Light、Fan、Speak三个组件,分别有三个方法来描述它们的工作状态。
请设计一个Program类,在该类中创建一个委托链表成员,设计一个方法显示调用委托链表每个成员,采用动态构建一个字符串返回信息以描述三个组件的工作状态。
部分代码如下:
publicclassLight//Light组件
{
publicstringSwitchPosition()
{
return“lightisoff”;
}
}
publicclassFan//Fan组件
{
publicstringSpeed()
{
return“fanisoverheated”;
}
}
publicclassSpeak//Speak组件
{
publicstringVolume()
{
return“soundisloud”;
}
}
2.有如下两个接口:
interfaceIStudent()
{voidShow();
stringGetName(stringid);
}
interfaceICourse()
{
voidShow();
}
请设计一个Student类,该类有id和name两字段成员,要求能实现上述接口,并能实现显示接口成员,并写出测试显式接口实现部分代码,调用IStudent接口Show()方法输出“InIStudent”信息;调用ICourse接口Show()方法输出“InICourse”信息
参考答案
一、选择题(每小题2分,共40分)
1-5(3)(4)(4)
(2)(3)6-10(3)
(2)(4)
(1)
(1)
11-15(4)
(1)
(2)(4)
(1)16-20
(1)(4)(3)
(1)(3)
二、简单应用题(总计4小题,共30分)
1、(6分)
B.Fun()
B.Fun()
2、(10分)
Typetype=Type.GetType(“Teach.Management.WebLib.Course.DAO.CourseDAOClass”,true);
ConstructorInfoconstructorInfo=type.GetConstructor(newType[0]);
return(ICourse)constructorInfo.Invoke(newobject[0]);
3、(8分)
publicclassMyException:
ApplicationException
{
publicMyException():
base()
{
}
publicMyException(stringstrMessage):
base(strMessage)
{
}
publicMyException(stringstrMessage,Exceptioninner):
base(strMessage,inner)
{
}
}
intage=int.Parse(Console.ReadLine());
try
{
if((age<=0))
throw(newMyException(“年龄不能为负数!
”));
elseif(age>120)
throw(newMyException(“年龄不能大于120!
”,newOverflowException()));
else
Console.WriteLine(“数据正确”);
}
catch(MyExceptione)
{
Console.WriteLine(“{0},{1}”,e.Message,e.InnerException);
}
finally
{
Console.WriteLine(“注意输入正确的年龄数据!
”);
Console.ReadLine();
}
4、(6分)
myList.Sort();
IEnumeratormyEnumerator=myList.GetEnumerator();
While(myEnumerator.MoveNext())
Console.Write(“\n{0}”,myEnumerator.Current);
Console.WriteLine();
三、综合设计题(每小题15分,共30分)
1、(15分)
publicclassProgram
{
publicdelegatestringGetStatus();
GetStatusgetStatus=null;
getStatus+=newGetStatus(newLight()。
Switchposition);
getStatus+=newGetStatus(newFan()。
Speed);
getStatus+=newGetStatus(newSpeak()。
Volume);
Console.WriteLine(GetComponentStatusReport(getStatus));
publicstaticstringGetComponentStatusReport(GetStatusstatus)
{
if(status==null)returnnull;
StringBuilderreport=newStringBuilder();
delegate[]arrayOfDelegates=status.GetInvocationList();
foreach(GetStatusgetStatusinarrayOfDelegates)
report.AppendFormat(“{0},{1},{1}”,getStatus(),EnVironment.NewLine);
returnreport.ToString();
}
}
2、(15分)
publicclassStudent:
IStudent,ICourse
{
string_id;
string_name;
publicStudent(stringid,stringname)
{
id=id;
_name=name
}
publicvoidShow()
{
Console.WriteLine(“helloworld”);
}
voidIStudent.Show()
{
Console.WriteLine(“InIStudnet”);
}
voidCourse.Show()
{
Console.WriteLine(“InICourse”);
}
publicstringGetName(stringid)
{
if(id==_id)
return_name
else
returnnull;
}
}
//测试代码
Studentstudent=newStudent();
((IStudent)student)。
Show();
((ICourse)student)。
Show()