一、选择题
1.下列选项中,()是引用类型(选择一项)
a)enum类型
b)struct类型
c)string类型
d)int类型
2.以下描述错误的是()(选择一项)
a)在C++中支持抽象类而在C#中不支持抽象类。
b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在 C#中没有头文件并且在同一处声明和定义类的成员。
c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。
d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
3.C#的数据类型有()(选择一项)
a)值类型和调用类型;
b)值类型和引用类型;
c)引用类型和关系类型;
d)关系类型和调用类型;
4.下列有关.NET类的描述错误的是()(选择三项)
a)类不可以多层继承而接口可以;
b)抽象类自身可以定义成员而接口不可以;
c)抽象类和接口都不能被实例化;
d)一个类可以有多个基类和多个基接口;
5.下列关于.NET构造函数的描述正确的是()(选择一项)
a)构造函数可以声明返回类型。
b)构造函数不可以用private修饰
c)构造函数必须与类名相同
d)构造函数不能带参数
6.以下是一些C#中的枚举型的定义,其中错误的用法有()(选择一项)
a)public enum var1{ Mike = 100, Nike = 102, Jike }
b)public enum var1{ Mike = 100, Nike, Jike }
c)public enum var1{ Mike=-1.23 , Nike, Jike } 枚举型应为整型的
d)public enum var1{ Mike , Nike , Jike }
7.下列代码执行结果是()(选择一项)
public static void Main(string[] args)
{
int i = 2000;
object o = i;
i = 2001;
int j =(int) o;
Console.WriteLine(“i={0},o={1}, j={2}”,i,o,j);
}
a) i=2001,o=2000,j=2000
b) i=2001,o=2001,,j=2001
c) i=2000,o=2001,,j=2000
d) i=2001,o=2000,j=2001
8.下列关于C#中索引器理解正确的是( ) (选择一项)
a)索引器的参数必须是两个或两个以上
b)索引器的参数类型必须是整数型
c)索引器没有名字
d)以上皆非
9.要对多线程进行操作则必须包含( ) (选择一项)
a)System.ComponentModel命名空间;
b)System. Collections命名空间;
c)System. Threading命名空间;
d)Microsoft.Win32命名空间;
10.
以下说法正确的是()(选择一项)
①执行该程序发生异常
②catch块执行
③finally块执行
④catch块不执行
a) ①③④
b) ①③
c) ①②③
d) ③④
11)在C#中,允许多接口继承,从多个接口继承时,使用“:”后跟被继承的接口的名字,多个接口名称之间使用()符号进行分割。(选择一项)
a)“.”
b)“,”
c)“-〉”
d)“::”
12)有C#代码如下:
在横线处填入语句(),输出为:C# is simple。(选择两项)
a)Console.PrintLine(“C# is simple”)
b)Console.WriteLine(“C# is simple”)
c)System.Console.WriteLine(“C# is simple”)
13)阅读下列程序
在myClass的Main()函数中,有代码如下:method1( );代码执行后,
输出为()。(选择一项)
a)3
b)0
c)非法的方法调用,没有输出
14)C#中,声明一个带参数的Main方法,代码为()。(选择一项)
a)public static void Main()
b)public static void Main(String[])
c)public static void Main(String[] args)
d)public static void Main(String * args)
15)要将一个C#程序编译为扩展名为DLL的程序库应用程序,要打开的编译器选项为()。(选择两项)
a) /target:library
b) /t: library
c) /t: exe
d) /target: winexe
16)在C#程序中,如果类B要继承A,类B正确的定义为()。(选择一项)
a) public class B inheritA
b) public class B:A
c) public classB::A
d) public class B form A
17)下列说法正确的是()(选择一项)
①c#是面向对象的编程语言
②装箱是从值类型到引用类型的转换
③cla(公共语言规范)是cts的子集,确保了跨语言互操作
④.NET平台使用统一的API
a)以上都正确
b)④正确
c) ①③④正确
d) ①②③正确
18)下列说法正确的是()(选择两项)
a)在c#中使用关键字static定义静态成员
b)静态成员不与任何特定对象相关联
c)变量名命名为@关键字是不合法的
19)下列说法正确的是()(选择一项)
a)c#支持for、foreach、while和do-while循环语句
b)c#只支持for、while和do-while循环语句
c)c#支持foreach、while和do-while循环语句
d)c#支持for、foreach、和while循环语句
20)可用于在控制台显示文本的方法是()(选择两项)
a)System.Console.Read方法
b)System.Console.ReadLine方法
c)System.Console.Write方法
d)System.Console.WriteLine方法
21)下列说法错误的是()(选择两项)
a).NET提供多语言支持
b).NET应用程序不需要CLR的管理即可执行
c).NET应用程序要经过两次编译方可执行
d)IL是机器码
22)在c#中密封类()(选择两项)
a)用final指定
b)用对指定
c)可以被继承
d)不可以被继承
23)下列有关事件的说法正确的是()(选择一项)
①定义事件时首先定义委托
②可以让多个对象预订事件
③引发事件时,将调用所有预订了该事件的对象的委托
a) ①②③
b) ①
c) ②③
24)()关键字用于创建抽象类(选择一项)
a)interface
b)internal
c)using
d)abstract
25)在.NET中,以下关于命名空间的描述,正确的是()。(选择一项)
a)命名空间不可以进行嵌套
b)在一个.cs文件中,只能存在一个命名空间
c)用using导入命名空间
26)在.NET中,程序中的错误可以划分为以下三类,除了()。(选择一项)
a) 逻辑错误
b) 语义错误
c) 语法错误
d) 规格错误
27)下列说法中正确的是()(选择一项)
①使用.NET基类库可以读取文本文件
②使用.NET基类库可以从内存中读取数据和将数据写入内存中
③System.IO命名空间包含用于在数据流和文件中读取和写入数据的类
④使用.NET基类库可以读取二进制文件
a) ①②③
b) ①②③④
c) ③④
d) ①②
28)只读属性通过()关键字来设置(选择一项)
a)Get 得到
b)readonly
c)set 设置
d)this
29)下列说法正确的是()(选择两项)
a)c#操作符重载不使用任何关键字即可完成
b)namespace表示命名空间
c)使用internal修饰的成员仅可以从声明它的程序集内部访问
d) 命名空间不可以嵌套
30)c#的数组属于引用类型,其正确使用方法是()(选择两项)
a)string [] str = new string [6];
b)string str[] = new string [6];
c)int [] array = {1,2,3,4,5}; 括号在变量之前
31)下列有关命名空间和程序集的说法正确的是()(选择一项)
①一个命名空间可以分布在多个程序集中
②一个程序集中可以包含多个命名空间
③程序集的类型包含私有程序集和共享程序集
④.NET使用程序集的模式共享和重用代码
a) ②③
b) ①②③
c) ①②
d) ①②③④
32)下列说法是否全部正确()(选择一项)
①多态可以通过虚方法、抽象基类和接口的技术来实现
②多态是指同一操作用于不同的类的实例,不同的类将进行不同的解释,最后产生不同的执行结果
③虚方法在基类中用virtual来修饰,在派生类中使用override来修饰方法重写基类的虚方法
④一个接口可以从其他接口继承
a)是
b)否
33)c#的构造函数,描述错误的是()(选择一项)
a)支持实例构造和静态构造
b)可以重载
c)和类同名
d)静态构造可以带有参数
34)有关结构的说法,错误的是()(选择一项)
a)使用struct关键字
b)可以包含数据成员和函数成员
c)支持继承 结构不能继承
d)是值类型并且不需要堆分配
1.分析如下所示C#代码,编译运行后的输出结果是( )。(选择一项)
public static void Main(string[] args)
{
int param = 2;
string position = “”;
switch (param)
{
case 1:
position = “兄长”;
break;
case 2:
position = “兄弟”;
break;
}
Console.WriteLine(position);
}
a) 兄长
b) 兄弟
c) 小妹
d) 兄长兄弟
2.现有如下一段C#代码,该代码的运行结果是( )。(选择一项)
public static void Main(){
for (int i=1;i<=3;i++){ switch(i){ case 1: Console.Write(i.ToString()); break; default: Console.Write((i*3).ToString()); }}} a) 169 b) 有编译错误 没有break!!! c) 369 d) 1233.看以下一段程序:Console.Write("hello world !");Console.WriteLine("friend.");int i=0;do{Console.Write("thank you !");i++;}while(i<2);程序的输出结果是( )(选择一项)a)hello world ! friend thank you !thank you !b)hello world ! friend thank you !thank you! Writeline 代表能换行c)hello world ! friend. thank you ! thank you !d)hello world !friend. thank you !4. using System; class Test{ static void Main(String [] args){int a=10,b=20,c=30; if(a>b||b>c)
Console.WriteLine(a);
else if(ab‖b>c)
Console.WriteLine(++b);
else
Console.WriteLine(a+b+c);
}
}
a) 22
b) 23
c) 66
d) 编译出错
9. 以下关于C#代码的说法正确的是( )。(选择一项)
for(int i=1;i<=3;i++){ switch(i) { case 1: Console.Write(i.ToString(); case 2: Console.Write((i*2).ToString(); case 3: Console.Write((i*3).ToString()}} a) 有编译错误,提示case标签不能贯穿到另一个标签,不能运行 没有写Break!!!! b) 输出149 c) 输出123246369 d) 正确运行,但没有输出10. 针对以下的C#代码:using System;class A{static void Main(){int[] B = new int[10];for(int I=1;I<=10;I++){ //空白处}foreach (int C in B){ Console.WriteLine (C);}}}要在控制台输出1到10的数字,空白处应填写的正确的代码为( )。(选择一项) a) B[I]=I+1; b) B[I]=I; c) B[I-1]=I;d) B[I+1]=I;11.在C#中,下列代码的运行结果是( )(选择一项)int a=30,b=20;b=a;a=10;Conlose.WriteLine(a);Conlose.WriteLine(b);a) 1010b) 1030c) 3020d) 102012.下列语句执行后,变量i的值为多少?( )(选择一项)string str = @"""Ahoy"",cried the caption. ";string str2 = ""Ahoy",cried the caption. ";int I = string.Compare(str,str2); a) false b) -1 c) 1 d) 013.在VS.Net开发环境中,为程序代码增加断点,快捷键为( )。(选择一项) a) F2 b) F5 c) F8 d) F914.在ADO.NET中,( )对象的结构类似于关系数据库的结构,并在与数据库断开的情况下,在缓存中存储数据。(选择一项) a) DataAdapter 加载数据源 b) DataSet重载 c) DataTable d) DataReader 读取机制15. 下面关于数据库操作的代码,错误的是( )(选择两项) a) SqlConnection conn = new SqlConnection();SqlCommand comm = new SqlCommand();comm.ExecuteNonQuery(); b) SqlConnection conn = new SqlConnection(“server=.;uid=sa;pwd=sa;database=db1”);conn.Open();SqlCommand comm = new SqlCommand(“delete * from table1”, conn);comm.ExecuteNonQuery();conn.Close() c) SqlConnection conn = new SqlConnection(“server=.,uid=sa,pwd=sa,database=db1”);conn.Open();SqlCommand comm = new SqlCommand(“delete * from table1”);comm.ExecuteNonQuery();conn.Close(); d) SqlConnection conn = new SqlConnection(“server=.;uid=sa;pwd=sa;database=db1”);conn.Open();SqlCommand comm = new SqlCommand(“delete * from table1”, conn);comm.ExecuteNonQuery();16.运行下面一段代码:class Class1{public static int count = 0;static Class1(){count++;}public Class1(){count++;}}Class1 o1 = new Class1();Class1 o2 = new Class1();请问,o1.count的值是多少?( )(选择一项) a) 1 b) 2 c) 3 d) 417.在C#中,下列代码的运行结果是( )。(选择一项)class A{ public void printStr(string str){ Console.WriteLine(str); }}class B:A{ new public void printStr(string str){ str=str+"(override)"; Console.WriteLine(str); }public static void Mail(string[] args){A a=new A();B b=new B();a.printStr(“test”);b.printStr(“test”);}} a) testtest(override) b) test(override) c) test d) test(override)test(override)18.分析以下C#代码,根据面向对象的多态性,代码的运行结果是( )。(选择一项)class A{ public void F(){ Console.Write("A");}方法重载 public void F(string chr){ Console.Write(chr); }}class B:A{ public void F(){ Console.Write("B");}}public class Test{public static void Main(string[] args){A a = new B();a.F();}} a) B b) A c) AB d) BA二、判断题:( 错)在C#中,索引器是专门用来访问对象中的数组信息的。( 对)在C#中,接口可以被多重继承而类不能。( 对)异常类对象均为System.Exception类的对象。(对)声明委托实际上是声明了一个方法。(对)任何事物都是对象。三、问答1、this关键字有什么作用,请描述2、请叙述const与readonly修饰得类成员的区别。一个是常量,一个是变量3、根据事件(event)的知识,请写出完整的运用事件,并触发事件的程序。 P74



