系别班次学号姓名.………密………封………线………以………内………答………题………无………效……第1页共9页电子科技大学成都学院期末试题——C#程序设计语言(A卷)题号一二三四总分评卷教师分数说明:本试卷共四大题,试卷满分100分,考试时间120分钟。一.判断题(每题1分,共10分,正确的打√,错误的打×)题号12345678910答案×√××√×√√√√()1.“+、-、*、/、%、++、--均属于二元运算符。()2.字符串类型属性引用类型。()3.VisualStudio控件的属性窗口中,按钮“A-Z”点击后,属性列表会先按照功能分类排列属性后在每个单元中以名称排序。()4.派生类可以继承基类的成员,以及方法的实现;派生的接口继承了父接口的成员方法,并且也继承父接口方法的实现。()5.当创建派生类对象时,先执行基类的构造函数,后执行派生类的构造函数。()6.隐式类型转换就是不需要声明目标类型就可以进行的转换?()7.如果基类没有默认的构造函数,那么其派生类构造函数必须通过base关键字来调用基类的构造函数。()8.在C#中在派生类中重新定义基类类的虚函数必须在前面加override。()9.C#中方法的参数中输出型参数(out)的实参在传递给形参前,不需要明确赋值,但需在方法返回前对该参数明确赋值。()10.在类中可以重载构造函数,C#会根据参数匹配原则来选择执行合适的构造函数。二.单项选择题(每题2分,共40分)一、(说明:每题有且仅有一个正确答案,请将正确答案填入下表)题号12345678910答案ABBBCDDABC题号11121314151617181920答案CDACCBAAAD1.C#程序设计语言属于什么类型的编程语言:A.高级语言B.自然语言C.机器语言D.汇编语言2.如有inta=11;则表达式(a++*1/3)的值是:A.0B.3C.4D.123.类的字段和方法的默认访问修饰符是:A.publicB.privateC.protectedD.internal系别班次学号姓名.………密………封………线………以………内………答………题………无………效……第2页共9页4.对于在代码中经常要用到的且不会改变的值,可以将其声明为常量。如圆周率PI始终为3.14。现在要声明一个名为PI的圆周率常量,下面哪段代码是正确的?A.constfloatPI;PI=3.14f;B.constfloatPI=3.14f;C.floatconstPI;PI=3.14f;D.floatconstPI=3.14f;5.请问经过表达式a=3+35?0:1的运算,变量a的最终值是什么?。A.6B.1C.0D.true6.下列语句是MyClass的一部分,obj是MyClass的一个对象。privateclasssubclass{publicintdata;}voidchange(refintx){x=1;}publicvoidtest(){subClasss=newsubClass();s.data=100;change(refs.data);Console.WriteLine(s.data);}则调用obj.test()后。控制台输出()。A.100B.101C.0D.17.用户自定义的异常类应该从哪个类中继承()A.System.ArgumentExceptionB.System.IO.IOExceptionC.System.SystemExceptionD.System.ApplicationException8.下面有关虚方法的描述正确的是()。A.虚方法能在程序运行时,动态确定要调用的方法,因而比非虚方法更灵活,更方便B.在定义虚方法时,基类和派生类的方法定义语句中都要带上virtual修饰符C.重写基类的虚方法时,为消除隐藏基类成员的警告,需要带上new修饰符D.在重写虚方法时,需要同时带上override和virtual修饰符9.下列语句声明了一个委托:publicdelegateintmyCallBack(intx);则用该委托产生的回调方法的原型应该是:A.voidreceive(intx)B.intreceive(intnum)C.intreceive()D.不确定的10.C#中TestClass为一自定义类,其中有以下属性定义publicvoidProperty{…}使用以下语句创建了该类的对象,并使变量obj引用该对象:TestClassobj=newTestClass();那么,可通过什么方式访问类TestClass的Property属性()A.TestClass.Progerty;B.TestClass.Property();C.obj.Property;D.obj.Property();11.已知类Base、MyClass的定义如下系别班次学号姓名.………密………封………线………以………内………答………题………无………效……第3页共9页classBase{publicvoidHello(){System.Console.WriteLine(HelloinBase!);}}classDerived:Base{publicvoidHello(){System.Console.WriteLine(HelloinDerived!);}}则下列语句在控制台中的输出结果为_____。Derivedx=newDerived();x.Hello();A.HelloinBase!B.HelloinDerived!C.HelloinBase!D.HelloinDerived!HelloinDerived!HelloinBase!12.下列关于接口的说法中,哪个选项是正确的?()A.一个类可以有多个基类和多个基接口B.抽象类和接口都不能被实例化C.抽象类和接口都可以对成员方法进行实现D.派生类可以不实现抽象基类的抽象方法,但必须实现继承的接口的方法13.下列关于构造函数的描述中,哪个选项是正确的?()A.构造函数必须与类名相同B.构造函数不可以用private修饰C.构造函数不能带参数D.构造函数可以声明返回类型14.引用数组元素时,数组下标的数据类型可以允许哪项类型?()A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式15.以下类MyClass的属性count属于_____属性。classMyClass{inti;intcount{get{returni;}}}系别班次学号姓名.………密………封………线………以………内………答………题………无………效……第4页共9页A.只读B.只写C.可读写D.不可读不可写16.要让用户选择和浏览要打开的文件,应使用什么对话框?()A.FileDialogB.OpenFileDialoC.SaveFileDialoD.FolderBrowserDialog17.在VisualStudio2005中,假设你正在单步调试某个应用程序。程序从入口开始,调用某个私有方法将产生异常。现在代码运行到如图所示位置,应该使用下面哪种方式进一步调试?A.使用逐语句调试B.使用逐过程调试C.跳出调试D.停止调试18..NETFramework2.0中,处理异常是很有用的功能。一个try代码块可以有多个catch块于之对应。在多个catch块中,下面哪个异常应该最后捕获?A.System.Exception类B.System.SystemException类C.System.ApplicationException类D.System.StackOverflowException类19.在二维坐标系中,通常需要保存一组点的坐标。使用二维数组是一个解决方案。下面哪段代码正确初始化了2行2列的整数二维数组?A.int[,]array=newint[2,2];B.int[][]array=newint[2][2];C.int[,]array=newint[2][2];D.int[][]array=newint[2,2];20.已经定义了一个Season枚举,它有4个成员Spring,Summer,Autumn,Winter。现在需要定义一个名为currentSeason的Season枚举,并将其赋值为Spring,应使用下面哪段代码?A.SeasoncurrentSeason=Spring;B.currentSeason=Spring;C.currentSeason=Season.Spring;D.SeasoncurrentSeason=Season.Spring;三.简答题(每题5分,共10分)1.类与对象有什么区别?答:类是用来描述某种具有相同属性和行为的事物,对象是类的一种具体表现。2.什么叫多态性,在C#语言中如何实现多态?答:多态性是指一段程序能够处理多种类型对象的能力。系别班次学号姓名.………密………封………线………以………内………答………题………无………效……第5页共9页四.综合题(共40分)1.下面这段程序要完成的功能是:从输入的字符串中找出小写字母并输出到终端。请检查下列代码,找出所有错误的代码,并写出该行完整的正确代码。(4分)1.usingSystem;2.publicclassProgram3.{4.staticvoidMain(string[]args)5.{6.stringinputString=Console.ReadLine();7.stringlowerCase=string.Empty;8.foreach(charchininputString)9.if(ch='a'||ch='z')10.lowerCase+=ch.ToString;11.Console.WriteLine(小写字母有:+lowerCase);12.}13.}更正以下两句:9.if(ch='a'&&ch='z')10.lowerCase+=ch.ToString();2.下述代码用于重写Message方法。请分析下述代码,并更正错误代码行。(4分)1.interfaceIMsg2.{3.voidMessage();4.}5.publicclassMyClass:IMsg6.{7.publicvirtualvoidMessage()8.{9.Console.WriteLine(MyClass);10.}11.}12.publicclassMyDerivedClass:MyClass13.{14.publicvoidMessage()15.{16.Console.WriteLine(MyDerivedClass);17.}18.}第14行:更正为:publicoverridevoidMessage()3.下面代码功能是对数组进行遍历,请分析下列代码段并在空白行补全C#代码。(4分)系别班次学号姓名.………密………封………线………以………内………答………题………无………效……第6页共9页staticvoidMain(string[]argz){string[]myString={windows,form,dialog};foreach((1)){Console.WriteLine(str);}}(1):stringstrinmyString4.下面程序中两个方法需要实现的功能是:int数组相加,即数组中的每项相加,以及string类型的相加,即把一串字符串接到另一串字符串后面。请分析下列代码段,并在空白行补全visualC#代码。(6分)(1){int[]result=newint[array1.Length];for(inti=0;iarray1.Length;i++)result[i]=array1[i]+array2[i];returnresult;}(2){stringspaceStr=,result=null;result=str1+spaceStr+str2;returnresult;}staticvoidMain(string[]arges){int[]a={1,