《c#程序设计》练习题Word格式.docx
《《c#程序设计》练习题Word格式.docx》由会员分享,可在线阅读,更多相关《《c#程序设计》练习题Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
Tom\'
;
B.stringstr="
C.stringstr("
);
D.stringstr("
Tom"
3.在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成()。
A.sealed方法B.public方法C.virtual方法D.override方法
4.用关于重载,以下叙述错误的是()。
A.重载是指在类的内部存在若干个方法名称一致但是参数列表不同的方法
B.方法重载是指创建多个名称相同的方法,其中每个方法都在某些方面具有唯一性,以便编译器能够正确区别它们
C.重载构造函数的方式与重载方法的方式相同
D.方法的重载允许两个方法的名称和参数列表相同,而返回类型不同
5.下面是一个派生类的定义语句:
publicclasscar:
vehicle
{privatestringmodel=”L”;
privateintwheelNo=4;
}
请指出针对该定义的正确的说法()。
A.vehicle类是car类的一个特例,因而它可以被继承
B.car类是父类,vehicle类是子类
C.在car类中定义的成员model和wheelNo会删除vehicle类中同名的成员
D.car类是vehicle类的一个特例,它可以继承vehicle类中除构造函数和析构函数以外的所有成员
6.()关键字可以用来访问当前对象的基类对象。
A.objectB.thisC.asD.base
7.下面有关虚方法的描述正确的是()。
A.虚方法能在程序运行时,动态确定要调用的方法,因而比非虚方法更灵活,更方便
B.在定义虚方法时,基类和派生类的方法定义语句中都要带上virtual修饰符
C.重写基类的虚方法时,为消除隐藏基类成员的警告,需要带上new修饰符
D.在重写虚方法时,需要同时带上override和virtual修饰符
8.分析下列代码段:
staticvoidMain(string[]args)
{
String[]words=newstring[]{"
a"
"
b"
c"
};
foreach(stringwordinwords)
word="
abc"
Console.WriteLine(word);
}
Console.ReadKey();
最终的运行结果是什么?
A.bcacabB.abcabcabcC.不能正确编译D.abc
9.已知类MyClass中事件MouseClicked定义如下:
publicstaticeventMouseClickedListenerMouseClicked;
执行下列语句:
MouseClicked+=newMouseClickedListener(obj.DoSomething);
然后引发该MouseClicked事件,其结果为:
A.obj.DoSomething方法被调用4次
B.obj.DoSomething方法被调用2次
C.obj.DoSomething方法被调用1
D.obj.DoSomething方法不会被调用
10.下列关于多态的说法中,那个是正确的?
A.虚方法是实现多态的唯一手段
B.重写虚方法时可以为虚方法指定别称
C.多态性是指以相似的手段来处理不相同的派生类
D.抽象类中不可以包含虚方法
11.C#中TestClass为一自定义类,其中有以下属性定义
publicvoidProperty{…}
使用以下语句创建了该类的对象,并使变量obj引用该对象:
TestClassobj=newTestClass();
那么,可通过什么方式访问类TestClass的Property属性()。
A.MyClass.Progerty;
B.obj:
:
Property;
C.obj.Property;
D.obj.Property();
12.下列关于继承说法中,哪个选项是正确的?
A.继承是指派生类可以获取其基类特征的能力
B.继承最主要的优点是提高代码性能
C.派生类可以继承多个基类的方法和属性
D.派生类必须通过base关键字调用基类的构造函数
13.对于try…catch…finally…如下结构,下面说法中,哪项是正确的?
A.在finaly块中放置return语句,编译可以通过
B.无论程序是否出现异常,finally块总是被执行的
C.一个try块只能和一个catch块对应
D.异常处理时,try块是可以省略的
14.分析下列程序代码:
usingSystem;
classProgram
{
staticvoidMain(string[]args)
stringtestString="
VisualStudio2008"
stringnewString=string.Empty;
foreach(charchintestString)
if(ch=='
i'
||ch=='
u'
)
continue;
newString+=ch.ToString();
Console.WriteLine(newString);
哪项的输出是正确的?
A.iuuiB.V
C.VsalStdo2008D.VisualStudio2008
15.在使用FileStream打开一个文件时,通过使用FileMode枚举类型的()成员,来指定操作系统打开一个现有文件并把文件读写指针定位在文件尾部。
A.AppendB.CreateC.CreateNewD.Truncate
16.以下类型中,不属于值类型的是()。
A.整数类型B.布尔类型C.枚举D.类类型
17.用户自定义的异常类应该从哪个类中继承()。
A.System.ArgumentExceptionB.System.IO.IOException
C.System.SystemExceptionD.System.ApplicationException
18.以下关于抽象类的说法,其中错误的是()。
A.抽象类可以实例化B.抽象类可以包含抽象方法
C.抽象类可以包含非抽象方法D.抽象类中可以定义成员变量
19.下列语句声明了一个委托:
publicdelegateintmyCallBack(intx);
则用该委托产生的回调方法的原型应该是()。
A.voidreceive(intx)B.intreceive(intnum)
C.intreceive()D.不确定的
20.类MyClass中有下列方法定义:
publicvoidtestParams(paramsint[]arr)
{
Console.Write("
使用Params参数!
"
publicvoidtestParams(intx,inty)
使用两个整型参数!
请问上述方法重载有无二义性?
若没有,则下列语句的输出为()。
MyClassx=newMyClass();
x.testParams(0);
x.testParams(0,1);
x.testParams(0,1,2);
A.有语义二义性;
B.使用Params参数!
使用Params参数!
C.使用Params参数!
D.使用Params参数!
21.下列关于接口的说法中,哪个选项是正确的?
()。
A.一个类可以有多个基类和多个基接口
B.抽象类和接口都不能被实例化
C.抽象类和接口都可以对成员方法进行实现
D.派生类可以不实现抽象基类的抽象方法,但必须实现继承的接口的方法
22.下列关于多态的说法中,那个是正确的?
D.抽象类中不可以包含虚方法
23.已知类Base、MyClass的定义如下
classBase
publicvoidHello()
System.Console.WriteLine("
HelloinBase!
classDerived:
Base
HelloinDerived!
则下列语句在控制台中的输出结果为()。
Derivedx=newDerived();
x.Hello();
A.HelloinBase!
B.HelloinDerived!
C.HelloinBase!
D.HelloinDerived!
HelloinBase!
24.下面哪一个不是C#关键字?
()
A.trueB.sizeofC.superD.void
25.以下是几条定义、创建并初始化一维数组的语句,其中错误的是()。
A.int[]score=newint[3]{10,20,30};
B.int[]score;
score=newint[3]{10,20,30};
C.int[]score={10,20,30};
D.int[]score=newint[4]{10,20,30};
26.下列的()不是构造函数的特征。
A.构造函数的函数名和类名相同B.构造函数可以重载
C.构造函数可以带有参数D.可以指定构造函数的返回值
27.在类TestClass中的构造函数有如下重载:
publicTestClass(paramsint[]_value)
Console.WriteLine(“paramscontrctor!
”);
publicTestClass(intx,inty)
Console.WriteLine(“twointcontructor!
运行下面的代码后,
TestClassobj1=newTestClass(0);
TestClassobj2=newTestClass(1,3);
TestClassobj3=newTestClass(1,3,4);
最后的输出结果是什么?
A.paramscontrctor!
twointcontructor!
B.paramscontrctor!
paramscontrctor!
C.无法编译通过
D.paramscontrctor!
twointcontructor!
28.下面关于Hashtable与Dictionary<
K,V>
的区别,正确的是()。
A.Hashtable和Dictionary<
中都可以添加任何类型的对象
B.Hashtable和Dictionary<
都需要强制转换后才能访问集合元素
C.在定义Hashtable对象时,无需指定键、值的类型,而定义Dictionary<
对象时,必须指定键、值的类型
D.Hashtable和Dictionary<
都可以使用Remove方法,利用Key删除指定元素
29.以下关于类的继承的说法,其中错误的是()
A.子类只能派生于一个父类B.一个父类可以有多个子类
C.所有的类成员都可以被继承
D.子类是对父类的扩展,子类可以添加新的成员
30.分析下列程序:
publicclassclass4
privatestring_sData="
publicstringsData{set{_sData=value;
}}
在Main函数中,在成功创建该类的对象obj后,下列哪个语句是合法的?
A.obj.sData="
Itisfunny!
B.Console.WriteLine(obj.sData);
C.obj._sData=100;
D.obj.set(obj.sData);
31.对下面的代码,哪段描述是错误的?
publicclassDoor
publicclassHouse
publicHouse()
Doordoor=newDoor();
A、Door是一个类B、House是一个从Door继承的类
C、House的构造函数中声明了一个名为door的变量
D、door是一个对象
32.设置“打开”对话框的Filter属性,可指定将要打开的文件类型,现在希望用户只能打开图片文件,则需要使用以下()选项作为筛选器字符串。
A.图片文件(*.BMP;
*.JPG;
*.GIF)|*.BMP;
*.GIF
B.文本文件(*.txt)|*.txt
C.所有文件(*.*)|*.*
D.Office文档(*.doc;
*.xls;
*.ppt)|*.doc;
*.ppt
三、综合题
1.下面这段程序要完成的功能是:
从输入的字符串中找出小写字母并输出到终端。
请检查下列代码,找出所有错误的代码,并写出该行完整的正确代码。
(把错误代码在原题标出,并在旁边纠正。
publicclassProgram
staticvoidMain(string[]args)
stringinputString=Console.ReadLine();
stringlowerCase=string.Empty;
foreach(charchininputString)
if(ch>
='
a'
||ch<
z'
lowerCase+=ch.ToString;
Console.WriteLine("
小写字母有:
+lowerCase);
}
2.下述代码用于重写Message方法。
请分析下述代码,并更正错误代码行。
interfaceIMsg
voidMessage();
publicclassMyClass:
IMsg
publicvirtualvoidMessage()
{
Console.WriteLine("
MyClass"
}
publicclassMyDerivedClass:
MyClass
publicvoidMessage()
Console.WriteLine("
MyDerivedClass"
3.下面代码的功能是遍历整个数组并将其显示出来。
string[]myArray=newstring[]{"
C#"
C++"
VB"
java"
for(inti=0;
i<
myArray.Length-1;
i++)
Console.WriteLine(myArray[i]);
}
System.Console.ReadKey();
4.请补充程序,使输出结果为:
a=20,b=10。
(在原题填空。
staticvoidMain()
inta=10,b=20;
Swap(,);
引用传递:
a={0},b={1}"
a,b);
Console.ReadLine();
publicstaticvoidSwap(,)
{
intz=x;
x=y;
y=z;
5.下面程序中两个方法需要实现的功能是:
int数组相加,即数组中的每项相加,以及string类型的相加,即把一串字符串接到另一串字符串后面。
请分析下列代码段,并在空白行补全visualC#代码。
int[]result=newint[array1.Length];
for(inti=0;
i<
array1.Length;
i++)
result[i]=array1[i]+array2[i];
returnresult;
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);
6.定义一个抽象类Vehicle,然后再定义它的一个派生类Truck,Truck类实现Vehicle类抽象方法和虚拟方法。
请把程序补充完整。
publicclassVehicle
privatefloatspeed;
publicfloatSpeed
{get{returnspeed;
set{speed=value;
publicVehicle(floatspeed)
this.speed=speed;
publicvirtualfloatRun(floatdistance)
returndistance/speed;
publicabstractvoidSpeak();
publicclassTruck:
Vehicle
privatefloatweight;
publicfloatWeight
get{returnweight;
privatefloatload;
publicfloatLoad
{get{returnload;
}}
publicTruck(intweight,intload):
base(50)
{this.weight=weight;
this.load=load;
publicfloatRun(floatdistance)
{return(1+load/Weight/2)*base.Run(distance);