C#期末试题选择题及答案.docx
《C#期末试题选择题及答案.docx》由会员分享,可在线阅读,更多相关《C#期末试题选择题及答案.docx(39页珍藏版)》请在冰豆网上搜索。
![C#期末试题选择题及答案.docx](https://file1.bdocx.com/fileroot1/2023-6/26/43456311-7b4b-40f1-9902-6e95d90dc59f/43456311-7b4b-40f1-9902-6e95d90dc59f1.gif)
C#期末试题选择题及答案
///////////////////////////////////////////////////
1.属于C*语言的关键字(A)。
A.abstractB.camelC.SalaryD.Employ
2.C*语言中,值类型包括:
基本值类型、结构类型和(D)。
A.小数类型B.整数类型C.类类型D.枚举类型
3.假定一个10行20列的二维整型数组,下列哪个定义语句是正确的(C)。
A.int[]arr=newint[10,20]
B.int[]arr=intnew[10,20]
C.int[,]arr=newint[10,20]
D.int[,]arr=newint[20;10]
5.以下正确的描述是()。
A.函数的定义可以嵌套,函数的调用不可以嵌套
B.函数的定义不可以嵌套,函数的调用可以嵌套
C.函数的定义和函数的调用均可以嵌套
D.函数的定义和函数的调用均不可以嵌套
9.可用作C*程序用户标识符的一组标识符是(B)。
A.voiddefine+WORDB.a3_b3_123YN
C.for-abcCaseD.2aDOsizeof
10.引用类型主要有4种:
类类型、数组类型、接口类型和()。
A.对象类型B.字符串类型C.委托类型D.整数类型
2.在C*中,定义派生时,指定其基类应使用的语句是()。
A.InheritsB.:
C.ClassD.Overrides
答案:
B
3.类的以下特性中,可以用于方便地重用已有的代码和数据的是().
A.多态B.封装C.继承D.抽象
答案:
C
4.在Array类中,可以对一维数组中的元素进行排序的方法是(A)。
A.Sort()B.Clear()C.Copy()D.Reverse()
3.以下标识符中不全是关键字的是(D)。
A.caseforint
B.defaultthenwhile
C.boolclasslong
D.gotounitchar
7.设”inta=12;”,则执行完语句”a+=a*a;”后,a的值是(C)。
A.12B.144C.156D.288
1.C*中MyClass为一自定义类,其中有以下方法定义
publicvoidHello(){..}
使用以下语句创建了该类的对象,并使变量obj引用该对象:
MyClassobj=newMyClass();
那么,可如何访问类MyClass的Hello方法?
(A)
A.obj.Hello();
B.obj:
:
Hello();
C.MyClass.Hello();
D.MyClass:
:
Hello();
2.分析下列C*语句,注意类MyClass没有访问修饰符:
namespaceClassLibrary1
{
classMyClass
{
publicclasssubClass
{
inti;
}
}
}
若必须为类MyClass添加访问修饰符,并使MyClass的可访问域保持不变,则应选择(C)
A.private访问只限于包含该成员的类,私有的
B.protected访问限于包含该成员的类及类的派生灯,保护的
C.internal访问只限于所在的程序集,只有在同一个程序集中才能访问
D.public访问不受限制,公共的还有一种是protectedinternal
3.C*可以采用下列哪些技术来进行对象部数据的隐藏?
(BC)
A.静态成员
B.类成员的访问控制说明
C.属性
D.装箱(boxing)和拆箱(Unboxing)技术
4.分析下列程序:
publicclassclass4
{
privatestring_sData=““;
publicstringsData{set{_sData=value;}}
}
在Main函数中,在成功创建该类的对象obj后,下列哪些语句是合法的?
(A)
A.obj.sData=“Itisfunny!
”;
B.Console.WriteLine(obj.sData);
C.obj._sData=100;
D.obj.set(obj.sData);
5.分析下列程序中类MyClass的定义
classBaseClass
{
publicinti;
}
classMyClass:
BaseClass
{
publicnewinti;
}
则下列语句在Console上的输出为(D)
MyClassy=newMyClass();
BaseClassx=y;
x.i=100;
Console.WriteLine(“{0},{1}”,x.i,y.i);
(提示:
注意类MyClass中的new关键字)
A.0,0
B.100,100
C.0,100
D.100,0
6.在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派
生类的需要,则应将该方法声明成(C)
A.sealed方法封闭类
B.public方法公共类
C.visual方法虚方法
D.override方法重载基类
7.类MyClass中有下列方法定义:
publicvoidtestParams(paramsint[]arr)
{
Console.Write(“使用Params参数!
”);
}
publicvoidtestParams(intx,inty)
{
Console.Write(“使用两个整型参数!
”);
}
请问上述方法重载有无二义性?
若没有,则下列语句的输出为(B)
MyClassx=newMyClass();
x.testParams(0);
x.testParams(0,1);
x.testParams(0,1,2);
A.有语义二义性;
B.使用Params参数!
使用两个整型参数!
使用Params参数!
C.使用Params参数!
使用Params参数!
使用Params参数!
D.使用Params参数!
使用两个整型参数!
使用两个整型参数!
8.使用下列哪种方法可以减小一个ArrayList对象的容量?
(CD)
A.调用Remove方法
B.调用Clear方法
C.调用Trim(调整,修剪)ToSize方法
D.设置Capacity属性
9.C*程序中,可使用try..catch机制来处理程序出现的(B)错误.
A.语法
B.运行
C.逻辑
D.拼写
10.C*中,在方法MyFunc部的try..catch语句中,如果在try代码块中发生异常,并且在当前的所有catch块中都没有找到合适的catch块,则(C)
A..NET运行时忽略该异常
B..NET运行时马上强制退出该程序
C..NET运行时继续在MyFunc的调用堆栈中查找提供该异常处理的过程
D..NET抛出一个新的”异常处理未找到”的异常
在C*中,预处理器指令*region(地区,围)和*endregion的作用是(B)。
A.注释*region和*endregion之间的代码
B.为CodeEditor定义一段可折叠代码区
C.*region和*endregion之间的代码在Debug版本中不参加编译
D.*region和*endregion之间的代码在Release版本中不参加编译
下列哪一个不是面向对象编程的特征D
A.继承 B.多态 C.封装 D.统一接口
面向对象程序设计中的数据隐藏指的是。
D
A.输入数据必须输入口令B.数据经过加密处理
C.对象部数据结构上建有防火墙D.对象部数据结构的不可访问性
下列描述中,(D )是不正确的。
A.面向对象程序设计可重用性较好;B.对象之间通过消息进行信息传递;
C.多态性体现了行为共享;D.面向对象方法的核心是继承;
在C*中,将路径名”C:
\Documents\”存入字符串变量path中的正确语句是(A)
A.path="C:
\\Docments\\";B.path="C:
//Document//";
C.path="C:
\Document\";D.path="C:
\/Document\/";
下列语句在控制台上的输出是多少?
(A)
stringmsg=”Hello\nWorld!
”;
System.Console.WriteLine(msg);
A.Hello\nWorld!
B.”Hello\nWorld!
”C.HelloWorld!
D.HelloWorld!
C*中执行下列语句整形变量x和y的值是多少?
(D)
intx=100;
inty=++x;
A.x=100y=100B.x=101y=100C.x=100y=101D.x=101y=101
D
C*中每个bool类型量占用(d)个字节的容.
A.4B.2C.8D.1
C*中每个char类型量占用(b)个字节的容.
A.1B.2C.4D.8
单选题C*中每个int类型的变量占用(c)个字节的存。
A.1B.2C.4D.8
在C*编制的财务程序中,需要创建一个存储流动资金金额的临时变量,则应使用下列哪条语句?
(a)
A.decimaltheMoney;B.inttheMoney;
C.stringtheMoney;D.dimtheMoneyasdouble
C*中的类型float对应.NET类库中的(a)
A.System.SingleB.System.DoubleC.System.Int32D.System.Int64
下列语句是类myclass的一部分,obj是myclass类的一个对象.
Voidchange(inti)
{
i++;
}
Publicvoidtest()
{
Inta=100;
Change(a);
Console.Writeline(a);
}
则调用obj.test后,控制台输出(b)
A.0;B.100;C.101;D.不输出;
C*的数据类型有。
B
A.值类型和调用类型;B.值类型和引用类型
C.引用类型和关系类型;D.关系类型和调用类型;
下列选项中,(C)是引用类型。
A.enum类型B.struct类型C.string类型D.int类型
已知类A中的一个成员函数的说明如下:
voidSet(Aa);
则该函数的参数“Aa”的含义是。
C
A.指向A的指针为aB.将变量a的地址赋给类A
C.类A对象引用a用作函数的形参D.变量A与a按位与后作函数参数
什么字符被用来放在其他字符串末尾使这些字符串连成一串"(a)
A.加号(+)B.减号(-)C.问号(")D.星号(*)
C*中,新建一字符串变量str,并将字符串”Tom'sLivingRoom”保存到串中,则应该使用下列哪条语句?
(a)
A.stringstr=“Tom\'sLivingRoom”;
B.stringstr=“stringstr=“Tom’’sLivingRoom”;
C.stringstr(“Tom'sLivingRoom”);
D.stringstr(“Tom’’sLivingRoom”);
在C*中,表示一个字符串的变量应使用以下哪条语句定义?
(b)
A.CStringstr;B.stringstr;C.DimstrasstringD.char*str;
类MyClass中有下列方法定义:
publicvoidtestParams(paramsint[]arr)
{
Console.Write(“使用Params参数!
”);
}
publicvoidtestParams(intx,inty)
{
Console.Write(“使用两个整型参数!
”);
}
请问上述方法重载有无二义性?
若没有,则下列语句的输出为(b)
MyClassx=newMyClass();
x.testParams(0);
x.testParams(0,1);
x.testParams(0,1,2);
A.有语义二义性;
B.使用Params参数!
使用两个整型参数!
使用Params参数!
C.使用Params参数!
使用Params参数!
使用Params参数!
D.使用Params参数!
使用两个整型参数!
使用两个整型参数!
单选题int[][]myArray3=newint[3][]
{
newint[3]{5,6,2},
newint[5]{6,9,7,8,3},
newint[2]{3,2}
};
myArray3[2][2]的值是(d)。
A.9B.2C.6D.越界
单选题下列语句创建了多少个string对象?
(a)string[,]strArray=newstring[3,4];
A.0B.3C.4D.12
单选题数组pins的定义如下:
int[]pins=newint[4]{9,2,3,1};则pins[1]=(b)
A.1B.2C.3D.9
单选题数组pins的定义如下:
string[]pins=news
tring[4]{"a","b","c","d"};执行下列语句后,数组pins的值为(b).
string[]myArr=pins;
myArr[3]="e";
A."a","b","e","d"B."a","b","c","e"
C."a","b","c","d"D."e","e","e","d"
以下哪个是可以变长的数组?
(d)
A.ArrayB.string[]
C.string[N]D.ArrayList
在System.Collection名字空间中,下列哪个类实现了一种数据结构,这种数据结构支持使用键值来索引结构中存放的对象?
(d)
A.Stack类B.ArrayList类
C.Queue类D.Hashtable类
在Queue类中,Enqueue方法的作用是:
(d)
A.将队列末端元素出队列B.将队列前端元素出队列
C.在队列前端压入新的元素D.在队列末端压入新的元素
在Queue类中,移除并返回队列前端对象的方法是:
(c)
A.popB.peekC.DequeueD.Enqueue
向ArrayList中增加一元素,用下列哪个方法。
(a)
A.AddB.RemoveC.InsertD.Append
以下是一些C*中的枚举型的定义,其中错误的用法有(a)。
A.publicenumvar1{“Mike”=100,“Nike”=102,“Jike”};
B.publicenumvar1{Mike=100,Nike,Jike};
C.publicenumvar1{Mike=-1,Nike,Jike};
D.publicenumvar1{Mike,Nike,Jike};
关于成员函数特征的下列描述中,( a)是错误的。
A.成员函数一定是实例函数;B.成员函数可以重载;
C.成员函数可以有不同的访问修饰符D.成员函数可以是静态的;
在下面的类定义中,缺省构造函数的作用是(c)
PublicclassMyClass
{
privateMyClass(){}
publicstaticintcounter;
publicstaticintincrenentCounter()
{
return++counter;
return++counter;
}
}
A.在创建类的实例时初始化类的域
B.因为是private的,因此不起任何作用
C.防止创建类的实例
D.无意义
单选题下列程序的输出是什么?
(c)
publicclassBase
{
Privatereadonlystringmsg=“Base!
”;
PrivateBase()
{
console.write(msg);
}//私有的
ProtectedBase(stringstr):
this()
{
this.msg=str;
}
Publicclassmyclass:
Base
{
Publicmyclass():
base("ABC")
{
console.write(“myclass”);
}
}
}
Staticvoidmain()//控制台主程序入口
{
Myclassx=newmyclass();
}
A.Base!
B.myclassC.Base!
Myclass!
D.Myclass!
Base!
C*类myclass定义如下:
publicclassmyclass
{
intcount;
privatemyclass(intI)
{
count=I;
}
}
现在需要为该类添加一个公有的构造函数,则下列函数定义正确的有(d)
A.publicmyclass(){myclass(100);}B.publicmyclass():
myclass(100){}
C.publicmyclass():
base(100){}D.publicmyclass():
this(100){}
( d)不是构造函数的特征。
A.构造函数的函数名与类名相同;B.构造函数可以重载;
C.构造函数可以设置缺省参数;D.构造函数必须指定类型说明。
没有类型
C*中MyClass为一自定义类,其中有以下方法定义
publicvoidHello(){..}
使用以下语句创建了该类的对象,并使变量obj引用该对象:
MyClassobj=newMyClass();
那么,可如何访问类MyClass的Hello方法?
(a)
A.obj.Hello();B.obj:
:
Hello();C.MyClass.Hello();D.MyClass:
:
Hello();
下列类的定义中哪些是合法的抽象类"(d)
A.sealedabstractclassc1
{
abstractpublicvoidtest(){}
}
B.abstractsealedpublicvoidtest();
C.abstractclassc1
{
abstractvoidtest();
}
D.abstractclassc1
{
abstractpublicvoidtest();
}
类MyClass定义如下:
namespaceClassLibrary1
{
publicclassMyClass
{
internalclasssubclass
{
inti;
}
}
}
则类MyClass.Subclass的可访问域为:
(b)
A.在所有引用ClassLibrary1的程序集中可用,但限于MyClass的部
B.定义MyClass时所在的程序集
C.在所有引用ClassLibrary1的程序集中可用,但限于MyClass的派生类中
D.访问不受限制
分析C*语句,注意类subCalss没有访问修饰符.
NamespaceClassLibrary1
{
PublicclassMylass
{
ClasssubClass
{
inti;
}
}
}
若必须为类subClass添加访问修饰符,并使subClass的可访问修饰符保持不变,则应选择(c)
A.protectedB.internal
C.privateD.public
分析下列C*语句,注意类MyClass没有访问修饰符:
namespaceClassLibrary1
{
classMyClass
{
publicclasssubClass
{
inti;
}
}
}
若必须为类MyClass添加访问修饰符,并使MyClass的可访问域保持不变,则应选择(c)
A.private访问只限于包含该成员的类,私有的
B.protected访问限于包含该成员的类及类的派生灯,保护的
C.internal访问只限于所在的程序集,只有在同一个程序集中才能访问
D.public访问不受限制,公共的还有一种是protectedinternal
在C*中设计类时,如何将一个可读可写的公有属性Name修改为只读属性?
(a)
A.将Name的set块删除B.将Name的set块置空
C.将Name的set块前加修饰符privateD.将Name添加readonly修饰符
以下类MyClass的属性count属于(a)属性.
classMyClass
{
inti;
intcount
{
Get
{
returni;
}
}
}
A.只读B.只写C.可读写D.不可读不可写
面向对象编程中的“继承”的概念是指(b)
A.派生类对象可以不受限制地访问所有的基类对象
B.派生自同一个基类的不同类的对象具有一些共同特征
C.对象之间通过消息进行交互
D.对象的部细节被隐藏
类class1,class2,class3的定义如下:
abstractclassclass1
{
abstractpublicvoidtest();
}
classclass2:
class1
{
publicoverridevoidtest()
{
Console.write(“class2”);
}
}
classclass3:
class2
{
publicoverridevoidtest()
{
Console.write(“class3”);
}
}
则下列语句的输出是什么"(b)
(提示:
从抽象类的规则)
Class1x=newclass3();
x