C#程序设计语言期末考试题A有答案Word格式.docx
《C#程序设计语言期末考试题A有答案Word格式.docx》由会员分享,可在线阅读,更多相关《C#程序设计语言期末考试题A有答案Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
()10.在类中可以重载构造函数,C#会根据参数匹配原则来选择执行合适的构造函数。
二.单项选择题(每题2分,共40分)
一、(说明:
每题有且仅有一个正确答案,请将正确答案填入下表)
A
B
C
D
11
12
13
14
15
16
17
18
19
20
1.C#程序设计语言属于什么类型的编程语言:
a
A.高级语言B.自然语言C.机器语言D.汇编语言
2.如有inta=11;
则表达式(a++*1/3)的值是:
b
A.0B.3C.4D.12
3.类的字段和方法的默认访问修饰符是:
A.publicB.privateC.protectedD.internal
4.对于在代码中经常要用到的且不会改变的值,可以将其声明为常量。
如圆周率PI始终为3.14。
现在要声明一个名为PI的圆周率常量,下面哪段代码是正确的?
A.constfloatPI;
PI=3.14f;
B.constfloatPI=3.14f;
C.floatconstPI;
D.floatconstPI=3.14f;
5.请问经过表达式a=3+3>
5?
0:
1的运算,变量a的最终值是什么?
。
c
A.6B.1C.0D.true
6.下列语句是MyClass的一部分,obj是MyClass的一个对象。
privateclasssubclass
{
publicintdata;
}
voidchange(refintx){x=1;
}
publicvoidtest()
subClasss=newsubClass();
s.data=100;
change(refs.data);
Console.WriteLine(s.data);
}
则调用obj.test()后。
控制台输出(d)。
A.100B.101C.0D.1
7.用户自定义的异常类应该从哪个类中继承(d)
A.System.ArgumentExceptionB.System.IO.IOException
C.System.SystemExceptionD.System.ApplicationException
8.下面有关虚方法的描述正确的是(a)。
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属性(c)
A.TestClass.Progerty;
B.TestClass.Property();
C.obj.Property;
D.obj.Property();
11.已知类Base、MyClass的定义如下
classBase
publicvoidHello()
System.Console.WriteLine("
HelloinBase!
"
);
//先基后派
classDerived:
Base
{
HelloinDerived!
则下列语句在控制台中的输出结果为__c___。
Derivedx=newDerived();
x.Hello();
A.HelloinBase!
B.HelloinDerived!
C.HelloinBase!
D.HelloinDerived!
HelloinBase!
12.下列关于接口的说法中,哪个选项是正确的?
(d)
A.一个类可以有多个基类和多个基接口
B.抽象类和接口都不能被实例化
C.抽象类和接口都可以对成员方法进行实现
D.派生类可以不实现抽象基类的抽象方法,但必须实现继承的接口的方法
13.下列关于构造函数的描述中,哪个选项是正确的?
(a)
A.构造函数必须与类名相同B.构造函数不可以用private修饰
C.构造函数不能带参数D.构造函数可以声明返回类型
14.引用数组元素时,数组下标的数据类型可以允许哪项类型?
(c)
A.整型常量B.整型表达式
C.整型常量或整型表达式D.任何类型的表达式
15.以下类MyClass的属性count属于__c___属性。
classMyClass
inti;
intcount
get{returni;
A.只读B.只写C.可读写D.不可读不可写
16.要让用户选择和浏览要打开的文件,应使用什么对话框?
(b)
A.FileDialogB.OpenFileDialo
C.SaveFileDialoD.FolderBrowserDialog
17.在VisualStudio2005中,假设你正在单步调试某个应用程序。
程序从入口开始,调用某个私有方法将产生异常。
现在代码运行到如图所示位置,应该使用下面哪种方式进一步调试?
a
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,应使用下面哪段代码?
d
A.SeasoncurrentSeason=Spring;
B.currentSeason=Spring;
C.currentSeason=Season.Spring;
D.SeasoncurrentSeason=Season.Spring;
三.简答题(每题5分,共10分)
1.类与对象有什么区别?
答:
类是用来描述某种具有相同属性和行为的事物,对象是类的一种具体表现。
2.什么叫多态性,在C#语言中如何实现多态?
多态性是指一段程序能够处理多种类型对象的能力。
四.综合题(共40分)
1.下面这段程序要完成的功能是:
从输入的字符串中找出小写字母并输出到终端。
请检查下列代码,找出所有错误的代码,并写出该行完整的正确代码。
(4分)
1.usingSystem;
2.publicclassProgram
3.{
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>
&
ch<
10.lowerCase+=ch.ToString();
2.下述代码用于重写Message方法。
请分析下述代码,并更正错误代码行。
1.interfaceIMsg
2.{
3.voidMessage();
4.}
5.publicclassMyClass:
IMsg
6.{
7.publicvirtualvoidMessage()
8.{
9.Console.WriteLine("
MyClass"
10.}
11.}
12.publicclassMyDerivedClass:
MyClass
13.{
14.publicvoidMessage()
15.{
16.Console.WriteLine("
MyDerivedClass"
17.}
18.}
第14行:
更正为:
publicoverridevoidMessage()
3.下面代码功能是对数组进行遍历,请分析下列代码段并在空白行补全C#代码。
staticvoidMain(string[]argz)
string[]myString={"
windows"
"
form"
dialog"
};
foreach(
(1))
Console.WriteLine(str);
(1):
stringstrinmyString
4.下面程序中两个方法需要实现的功能是:
int数组相加,即数组中的每项相加,
以及string类型的相加,即把一串字符串接到另一串字符串后面。
请分析下列代码段,并在空白行补全visualC#代码。
(6分)
(1)
int[]result=newint[array1.Length];
for(inti=0;
i<
array1.Length;
i++)
result[i]=array1[i]+array2[i];
returnresult;
(2){
stringspaceStr="
"
result=null;
result=str1+spaceStr+str2;
staticvoidMain(string[]arges)
int[]a={1,2,3,},b={4,5,6};
int[]sumArray=newint[3];
stringstr1="
visual"
str2="
studio"
;
stringsumString=null;
sumArray=Add(a,b);
sumString=Add(str1,str2);
1,staticint[]Add(int[]array1,int[]array2)
2.staticstringAdd(stringstr1,stringstr2)
5.下列程序段的作用是对字符串数组myArray进行排序后输出“RubyMarkNormanKinger”,请补全代码完成该功能。
staticvoidMain(string[]args)
string[]myArray=newstring[]{"
Kinger"
"
Norman"
Ruby"
Mark"
};
Sort(myArray);
foreach(stringstrinmyArray)
Console.Write(str+"
publicstaticvoidSort(string[]array)
stringstr;
for(intj=0;
j<
array.Length-2;
j++)
for(inti=0;
i<
array.Length-j-1;
i++)
str=array[i];
array[i]=array[i+1];
array[i+1]=str;
6.比尔在教他的女儿面向对象的知识。
他写了一个类Bill和一个接口IPrintname。
现在他希望女儿能够写一个类Jennifer,继承自Bill,重写基类函数WhoAmI(),将输出改为“Jennifer”;
并且实现接口IPrintname,该接口只有一个方法Print,这个方法的实现会在控制台打印调用WhoAmI函数的结果(即:
“Jennifer”)。
publicclassBill
publicvirtualstringWhoAmI()
return"
Bill"
publicinterfaceIPrintname
voidPrint();
publicclassJennifer:
Bill,IPrintname
publicoverridestringWhoAmI()
Jennifer"
publicvoidPrint()
Console.WriteLine(WhoAmI());
7.下列Shape类是一个表示形状的抽象类,Area()为求图形面积的函数,Total()则是一个通用的用求不同形状的图形面积总和的函数。
请从Shape类派生矩形类(Rectangle)、圆形类(Circle),给出具体的求面积函数。
并在主函数中写出计算如图所示图形面积的语句。
(共10分)
namespacetest
classProgram
staticvoidMain(string[]args)
rectanglerec1=newrectangle(30,5);
rectanglerec2=newrectangle(30,5);
circlecir1=newcircle(6);
circlecir2=newcircle(6);
circlecir3=newcircle(6);
shape[]s=newshape[5];
s[0]=rec1;
s[1]=rec2;
s[2]=cir1;
s[3]=cir2;
s[4]=cir3;
Console.WriteLine(total(s));
staticdoubletotal(shape[]s)
doublesum=0.0;
intn=s.Length;
//for(inti=0;
n;
//sum+=s[i].area();
foreach(shapeshins)
sum+=sh.area();
returnsum;
abstractclassshape
publicabstractdoublearea();
classrectangle:
shape
doublea,b;
publicrectangle(doublex,doubley)
a=x;
b=y;
publicoverridedoublearea()
returna*b;
classcircle:
doubler;
publiccircle(doubler)
this.r=r;
return3.14*r*r;
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求