NET课后习题.docx
《NET课后习题.docx》由会员分享,可在线阅读,更多相关《NET课后习题.docx(17页珍藏版)》请在冰豆网上搜索。
NET课后习题
第一章
一、单选:
1、以下有关.NET平台的叙述,错误的是(C)
A..NET平台的核心是.NETFramework
B.Visual是.NET平台的主要开发工具
C..NET建立在开放体系结构基础之上,具有跨Linux/UNIX的可移植性
D..NET平台完全支持现有的Internet技术
2、以下有关公共语言运行时CLR的叙述,错误的是(D)
A.CLR是.NETFramework的核心
B.CLR的原意思是CommonLanguageRuntime
C..NET应用程序运行时,CLR自动进行JIT编译器
D.CLR内置了内存分配、垃圾回收等托管功能,因此可完全替代操作系统
3、以下有关C#的叙述,错误的是(A)
A.C#源程序不需要编译,托管给CLR之后就可以运行
B.C#是完全面向对象的程序设计语言
C.不允许在程序中使用指针
D.C#能够开发诸如网络通信、动画制作、图像处理等程序
4、以下哪种文件时C#源程序文件(B)
A..slnB..csC..csrpojD..aspx
5、不管是哪种C#程序,必须添加的命名空间是(A)
A.SystemB.
C.D.
6、以下有关C#源程序叙述错误的是(C)
A.一个C#源程序至少包括一个自定义类
B.C#程序中的每个语句必须以分号结尾
C.C#语言提供了丰富的输入输出方法,例如()
D.当程序被编译时,C#程序中的注释将被自动忽略
7、以下有关C#程序叙述错误的是(C)
A.C#控制台应用必须包含一个Main方法
B.C#Windows应用程序必须包含一个Main方法
C.C#Web应用程序必须包含一个Main方法
D.C#程序中的方法由两部分组成,即方法的头部和方法体
8、以下有关控件叙述错误的是(D)
A.控件对象在程序中实质上就是一个变量
B.Label控件可用来显示提示信息或程序的运行结果
C.TextBox控件可用来输入数据
D.Button控件只能相应鼠标单击操作,出发Click事件方法
二、判断:
1、如果把Windows操作系统比作一幢摩天大楼的基地,那么.NETFramework就是摩天大楼中由钢筋和混凝土搭成的框架。
(√)
2、.NET平台只支持微软自己的VB、C#、C++、F#等语言开发应用程序。
(×)
3、C#程序经过编译之后生成的可执行文件与传统的可执行文件没有任何区别。
(×)
4、Visual集应用程序创建、设计、编辑、编译、调试和运行等功能为一体,因此是C#程序的主要集成开发环境。
(√)
5、因为控件是Windows程序的基本组成元素,因此不能在程序运行时才在窗体中添加控件,必须提前通过工具箱添加。
(×)
第二章
一、单选题:
1、当需要使用一种数据类型表达同一类事物的不同状态,比如:
男人、女人、小孩、老人或者春、夏、秋、冬时,C#中最可靠和直观的解决方案是什么(A)
A.使用枚举
B.使用struct结构
C.C#中无法通过一种数据类型表达同一事物的不同状态
D.使用int类型,用不同的数值{0,1,2,…}表示
2、假设a不等于b,并且b不等于false,下列哪个表达式的运算结果为false(C)
A.a!
=bB.a=bC.a==bD.a<>b
3、引用数组元素时,数组下标的数据类型可以允许哪项类型(C)
A.整型常量B.整型表达式C.整型常量或整型表达式D.任何类型的表达式
4、有一个整型数组int[]array=newint{1,2,3,4}。
通过索引访问该数组,当索引为2时,得到的结果是(C)
A.1B.2C.3D.4
5、某二维数组定义为int[,]a={{1,2,3,4},{2,3,4,5},{3,4,5,6}},那么a[2,3]的值是(B)
A.3B.6C.5D.4
6、某字符串的定义为strings=”helloworld!
”;在该字符串中,字符w的索引是(B)
A.7B.6C.2D.8
7、以下哪个数组的创建代码是正确的(C)
A.int[]myArray=newint[3]{6,5,9,4}
B.int[]myArray=newint[4]{,7}
C.int[]myArray={9,3,7,2}
D.int[]myArray=newint[5]
myArray={9,8,0,2,6}
8、下面哪段代码正确初始化了2行2列的整数二维数组(A)
A.int[,]array=newint[2,2]
B.int[][]array=newint[2][2]
C.int[,]array=newint[2][2]
D.int[][]array=newint[2,2]
9、已经定义了一个Season枚举,它有4个成员Spring、Summer、Autumn、Winter。
现在需要定义一个名为currentSeason的Season枚举,并将其赋值为Spring,应使用下面哪段代码(D)
A.SeasoncurrentSeason=Spring;
B.currentSeason=Spring;
C.currentSeason=;
D.SeasoncurrentSeason=;
二、多项选择:
1、下列选项的变量名中,哪些项的变量名是不合法的(AC)
A.stringB._43ZC.D.Int
2、下列关于C#中声明变量规则的描述中,哪些选项是正确的(ACD)
A.不能以数字开头
B.不能以“_”开头
C.不能大小写混用
D.不能用“@#!
¥%”等除了“_”以外的符号作为变量名
3、已知变量I有如下定义:
intI=1000;
则下列类型转换中,哪些出现了数据精度的丢失(AD)
A.byteJ=(byte)I;
B.longL=(long)I;
C.doubleD=(double)I;
D.shortS=(short)I;
4、在以下选项中,下列哪些类型可以成功地进行隐式类型转换(BD)
A.int类型到bool类型的转换
B.long类型到decimal类型的转换
C.int类型到char类型的转换
D.float类型到double类型的转换
5、下列关“||”运算符的描述中,哪些是正确的(ABD)
A.“||”运算符是一种比较运算符
B.“||”运算符不是关键字
C.在使用“||”运算符的运算中,如果结果为真,则运算符左右两边的操作数都为真
D.“||”运算符执行短路计算
6、下列关于字符串的描述中,哪些选项是正确的(AD)
A.string对象是对象的有序集合,用于表示字符串
B.string对象被创建后,该对象的值是能够被修改的
C.使用“+”操作符连接两个string对象,这两个字符串对象都被修改了
D.字符串是Unicode的有序集合
7、下列关于数组索引的描述中,哪些选项是正确的(AC)
A.二维数组有两个索引值B.二维数组只有一个索引值
C.一维数组只有一个索引值D.数组的索引一般都是浮点型的
8、下列关于数组创建的描述中,哪些选项是正确的(ABCD)
A.数组在访问之前必须初始化
B.允许创建大小为0的数组
C.可以不使用new关键字来对数组进行初始化
D.数组在创建实例时,已经被编译器初始化了默认值,因此可以直接访问
第三章
一、单选题:
1、一年中的12个月,每个月的中文对应一个数字,如“一月”对应1,“二月”对应2.现在输入一个整数,希望能输出数字对应的中文,例如输入1,输出“一月”。
使用下面的哪种代码结构最适合(C)
A.单一的if结构B.嵌套的if结构C.switch结构D.嵌套的if…else结构
3、下列关于switch…case…和if…else…的描述中,哪个选项是错误的(D)
A.switch…case…和if…else…都是非常重要的条件语句
B.当程序中只需要进行两个选择,一般采用if…else…语句
C.当程序中有两个以上的选择要选时,可以采用switch…case…语句
D.在程序中,switch…case…语句可以代替if…else…语句
4、下列关于语句switch(表达式)和case表达式的描述中,错误的选项是(A)
A.default关键字是不可以省略的B.case后面的表达式是常量表达式
C.break关键字可用于跳出switch语句D.switch后面的表达式是控制表达式
5、如果希望实现从1到10的累加,并得出结果,
intcount=0;
___________
{
count+=1;
}
应该在空白处添加下面哪段代码(C)
A.for(inti=0;i<10;i++)B.for(inti=0;i<=9;i++)
C.for(inti=1;i<=10;i++)D.for(inti=1;i<10;i++)
6、分析下列程序代码:
usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
stringtestString=”VisualStudio2010”;
stringnewString=;
foreach(charchintestString)
{
if(ch==’1’||ch==’u’)
continue;
newString+=();
}
(newString);
}
}
哪项的输出时正确的(C)
A.iuuiB.VC.VsalStdo2010D.VisualStudio2010
7、分析下列程序代码:
usingSystem;
publicclassProgram
{
staticvoidMain(string[]args)
{
for(inti=1;i<=16;i++)
{
if(i%4==0)
()+’’);
}
}
}
哪项的输出是正确的(C)
A.12356791011131415B.416
C.481216D.123456…141516
8、实现一个有多路分支的控制表达式,最适合的方法是使用(B)语句。
A.if…else…语句B.switch…case…语句
C.for语句D.foreach语句
9、关于如下程序结构的描述中,哪一项是正确的(C)
for(;;)
{
循环体;
}
A.执行循环体一次B.程序不符合语法要求
C.一直执行循环体,即死循环D.不执行循环体
10、分析些列程序段:
usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
int1=0;sum=0;
do
{
sum++;
}
while(i>0);
(“sum={0}”,sum);
}
}
程序运行的输出结果是什么(B)
A.sum=0B.sum=1C.sum=2D.sum=3
二、多项选择:
1、计算机程序总是由若干条语句组成的,组成程序的常用结构分别是(BCD)
A.跳转结构B.循环结构C.分支结构D.顺序结构
2、swich()语句中的控制表达式可以是下面哪几种类型(ABCD)
A.char类型B.string类型C.int类型D.Enum类型
第四章
判断:
1.在面向对象的开发中,对象就是现实世界中事物的抽象。
√
2.计算机编程中主要有两种抽象形式:
过程抽象和数据抽象,面向对象的编程主要采用过程抽象的方法。
×
3.面向对象将数据和对数据的操作作为一个相互依赖、不可分割的整体,采用了数据抽象和信息隐藏技术。
√
4.类和对象的区别就是,类是对象的实例,而对象则是类的抽象。
×
5.属性就是实体特征的抽象,比如,对象猫可以有重量、身长等属性。
√
选择:
1.封装是指使用类型将数据和基于数据的()包装在一起,封装的主要目的就是达到接口和()的分离(A)
A.操作,实现B.接口,实现C.操作,数据D.接口,操作
2.场景“司令员发号,高个子男人拿起枪射击”经过合理的抽象后,类是(),事件是(),属性是(),方法是()。
(B)
A.个子、发号、射击、人B.人、发号、个子、射击
C.射击、人、发号、个子D.发号、射击、人、个子
3.C#中TestClass为一自定义类,其中有以下属性定义:
publicvoidProperty{…}
使用一项语句创建该类的对象,并使变量obj引用该对象:
TestClassobj=newTestClass();那么,可通过什么方式访问类TestClass的Property属性(C)
:
:
Property;
4.在C#的类结构中,class关键字前面的关键字是表示访问级别,下面哪个关键字的访问级别是表示只有在同一个程序集内,内部类型或成员才是可访问的(A)
A.public
5.分析下列程序:
Publicclassclass4
{Privatestring_sData=“”;
Publicstrings_Data{set{_sData=value;}}}
在Main函数中,在成功创建该类的对象obj后,下列那个语句是合法的(A)
6.A.=”Itisfunny!
”;=100;以下类MyClass的属性count属于()属性。
(A)
ClassMyClass{
Inti;
Intcount{get{returni;}}}
A.只读B.只写C.可读写D.不可读不可写
7.关于重载,以下叙述错误的是(D)。
A.重载是指在类的内部存在若干个方法名称一致但是参数列表不同的方法
B.方法重载是指创建多个名称相同的方法,其中每个方法都在某些方面具有唯一性,以便编译器能够正确区分它们
C.重载构造函数的方式与重载方法的方式相同
D.方法的重载允许两个方法名称和参数列表相同,而返回类型不同
8.下面有关C#中方法的参数描述正确的是()。
(B)
A.利用值类型参数调用方法时,对形参的修改会反映到实参上去
B.输出型参数(out)的实参在传递给形参前,不需要明确赋值
C.引用型参数(ref)不另外开辟新的内存区域,这一点是它与输出型参数(out)的不同之处
D.使用params做数组参数的关键词时,params数组可以不是最后一个参数
9.C#中MyClass为一定义类,其中有以下方法定义:
PublicvoidHello(){…}
使用以下语句创建了该类的对象,并使变量obj引用该对象:
MyClassobj=newMyclass();
那么,可如何访问类MyClass的Hello方法(A)
:
:
Hello();:
:
Hello();
10.分析下列代码段(A)
Classtest{
Privateintz;
PrivateintreturnInt()
{returnz;}}
上述代码运行后变量z返回的结果是什么
D.无法编译通过
11.下面关于C#中类的构造函数描述正确的是(D)。
A.为了增强类的封装性,构造函数一般被声明成private型
B.构造函数如同方法一样,需要先调用才能执行其功能
C.与方法不同的是,构造函数只有void这一返回类型
D.在类中可以重载构造函数,C#会根据参数匹配原则来选择执行合适的构造函数
12.下列关于构造函数的描述中,哪个选项是正确的(A)
A.构造函数必须与类名相同B.构造函数不可以用private修饰
C.构造函数不能带参数D.构造函数可以声明返回类型
第五章
判断:
(1)当创建派生类对象时,先执行基类的构造函数,后执行派生类的构造函数。
(√)
(2)派生类可以继承基类的成员,以及方法的实现;派生的借口继承了父接口的成员方法,并且也继承了父接口方法的实现。
(×)
(3)如果基类没有默认的构造函数,那么其派生类构造函数必须通过base关键字来调用基类的构造函数。
(√)
(4)抽象类中必须包含抽象成员,抽象成员可以不一定包含在抽象类中。
(×)
(5)基类的派生非抽象类必须为基类中的抽象方法提供实现。
(√)
(6)基类中对抽象方法不提供实现,但是在基类的派生中必须为该抽象方法提供实现。
(√)
(7)派生类可以同时继承一个基类和多个接口代码可以如下编写:
PublicclassEditBox:
Control;IControl;UDataBound{…}(×)
(8)当重写虚方法时,重写方法必须与被重写虚方法具有相同的方法名。
(√)
单选:
A
(1)C#中声明一个命名空间的关键字是()
A
(2)下列关于继承说法中,那个选项是正确的()
A.继承是派生类可以获取其基类特征的能力
B.继承最主要的优点是提高代码性能
C.派生类可以继承多个基类的方法和属性
D.派生类必须通过base关键字调用基类的构造函数
D(3)()关键字可以用来访问当前对象的基类对象。
D(4)下列关于继承的说法中,哪项不正确
A.继承是指派生类可以获取其基类特征的能力
B.在派生类中重写积累方法必须使用override关键字
C.抽象类可以作为基类,所以不可以直接实例化,也不可以被密封
D.类可以继承多个接口,借口只能继承一个接口
C(5)下列关于C#面向对象应用的描述中,哪项是正确的
A.派生类是基类的扩展,派生类可以添加新的成员,也可以去掉已经继承的成员
B.相象方法的声明和实现必须同时进行
C.声明为sealed的类不能被继承
D.接口像类一样,可以定义并实现方法
B(6)下面关于密封类和密封方法的说法正确的是()
A.密封类是抽象类的一种特例,唯一的区别是:
定义密封类时要使用sealed修饰符
B.密封类不允许被继承,因而不能由密封方法也只能定义在密封类中、
C.如同抽象方法只能定义在抽象类中一样,密封方法也只能定义在密封类中
D.由于密封方法也被视作一种虚方法,因而在定义密封方法时必须带上vurtual修饰符
C(7)下面是一个派生类的定义语句:
Publicclasscar:
vehicle{
Privatestringmodel=“L”;
PrivateintwheelNo=4;}
请指出针对该定义的正确说法()
A.vehicle类是car类的一个特例,因而它可以被继承
B.car类是父类,vehicle类是子类
C.在car类中定义的成员model和wheelNo会删除vehicle类中同名的成员
D.car类是vehicle类的一个特例,它可以继承vehicle类中除构造和析构函数以外的所有成员
B(8)已知类Base、MyClasss的定义如下
classBase{
publicvoidHello(){
inBase!
”);
}}
ClassDerived:
Bass{
PublicvoidHello(){
inDerived!
”);
}}
则下列语句在控制台中的输出结果为()
Derivedx=newDerived();
();
inBaseinDerived!
inBase!
inDerived!
HelloinDerived!
HelloinBase!
B(9)对下面的代码,哪段描述是错误的()
PublicclassDoor{}
PublicclassHouse{
PublicHouse(){
Doordoor=newDoor();}}
是一个类是一个从Door继承的类。
的构造函数中声明了一个名为door的变量是一个对象
A(10)下面代码使用了面向对象的什么特征()
PublicclassA{
PublicvoidDoSomething(){}}
PublicclassB:
A{
NewpublicvoidDoSomething(){
();}}
A.继承性B.多态性C.封装性D.关联性
B(11)下列关于抽象方法和抽象类的描述中,那个选项是不正确的()
A.抽象方法是没有实现的空方法B.抽象类必须包括抽象成员
C.抽象类可以作为基类,所以不能直接实例化,也不可以被密封
D.当派生类从抽象类中继承抽象方法时,派生类必须重写该抽象方法
C(12)下列关于多态的说法中,哪个是正确的
A.虚方法是实现多态的唯一手段B.重写虚方法可以为虚方法指定别称
C.多态性是指以相似的手段来处理不相同的派生类D.抽象类中不可以包含虚方法
D(14)下列关于C#关键字的描述中,哪个是错误的
A.在派生类中重写基类方法必须使用override关键字
B.在派生类中访问基类非默认构造函数必须通过base关键字
C.虚方法的定义必须要用到virtual关键字
D.as关键字只能用于接口的强制转换
A(15)下列关于接口的说法中,哪个是错误的
A.一个类可以有多个基类和多个接口B.抽象类和接口都不能被实例化
C.抽象类自身可以定义成员,而接口不可以D.类不可以多重继承,而接口可以
第八章
判断:
(1)委托是属于引用类型。
(√)
(2)使用委托对象调用方法时,必须保证参数的类型、个数、顺序和方法声明匹配。
(√)
(3)C#不允许使用一个委托对象来同时调用多个方法。
(×)
(4)当委托被调用时,委托列表中所有的方法被顺序调用一次。
(√)
(5)在C#中事件实际上就是一个委托类型的变量。
(√)
(6)事件定义后,一旦事件被触发,就会调用相应的事件处理程序。
(×)
单选:
B
(1)引用方法的委托与该方法必须有相同的()
A.名字、返回值和参数列表B.返回值和参数列表
C.名字和返回值D.参数列表
B
(2)下列语句声明了一个委托:
publicdelegateintmyCallBack(intx);则用该委托产生的回调方法的原型应该是:
()
myCallBack(intx)receive(intnum)
receive(intx)D.不确定的
D(3)下列对于委托理解的描述中,那个选项不正确
A.用delegate关键字声明B.类似于函数的指针
C.声明时必须和目标函数具有同样的签名D.委托时不安全的
B(4)委托可以在运行时间接调用一个或多个方法。
要定义一个名为DoSomething的委托,应该使用下列哪段代码