1、C#复习题一、编程基础01、C#程序设计语言属于什么类型的编程语言( )A)机器语言 B)高级语言 C)汇编语言 D)自然语言02、下列标识符命名正确的是( )A) exam-1 B)Main C)_months D)X.2503、下面属于合法变量名的是( )A) P_qr B)123mnp C) char D) x-y04、下列标识符命名正确的是( )A) X.25 B)4foots C)val(7) D)_Years05、可用作 C#程序用户标识符的一组标识符是( )A)void define +WORD B)a3_b3 _123 YNC)for -abc Case D)2a DO siz
2、eof06、下列属于合法 C#变量名的有( )A)x_123 B)if C)1_x D)3x07、C#中下列变量标识符定义不正确的是( )A) m_n B) _a124; C) 3_4; D) udouble08、在 C#语言中,下列能够作为变量名的是( )A)if B)3ab C)a_3b D)a-bc09、关于 C#程序的书写,下列不正确的说法是( )A)区分大小写 B)一行可以写多条语句C)一条语句可写成多行D)一个类中只能有一个 Main()方法,因此多个类中可以有多个 Main()方法10、C#程序的( )方法被成为程序的大门,应用程序从这里开始运行A) Main() B) Begi
3、n() C) Start() D) main()11、C#源程序文件的拓展名是( )A)vb B)c C)cpp D)cs12、C#中导入某一命名空间的关键字是( )A) using B)use C)import D) include13、C#语言中声明类的关键字是( )A)using B)class C)namespace D)Main14、C#程序中,使用关键字( )来声明自定义的名称空间。A)namespace B)new C)import D)try15、在 C#中,引用命名空间 System的正确语句是( )A)using System; B)#import ;C)uses Syst
4、em;D)#include ;16、以下数据类型中不可以使用算术运算运算的是( )A) bool B) char C) decimal D) sbyte17、以下数据类型不能表示负数范围的是( )A) sbyte B) decimal C) double D) uint18. 在C#中,表示一个字符串的变量应使用以下哪条语句定义?( )A)CString str; B)string str; C)Dim str as string D)char * str;19、在 C#中, ( )类提供了操作字符串的方法。A)System.Threading C)System.CollectionsB)Sy
5、stem.IO D)System.String20、如果左操作数大于右操作数, ( )运算符返回 false。A)= B) 5 ? 0 : 1的运算,变量 a的最终值是什么?( )A)4 B)0 C)1 D)343、设 int x=10, a=0, b=25;则条件表达式 x 0)运算后,e 的值是( )A)0 B)1 C)true D)false45、当( )时,条件“expression1 expression2”的值为真。A) expression1 为真而 expression2为假 B) expression1 为假而 expression2为真C) expression1 和 ex
6、pression2 均为真 D) A 和 B都对46、C#中,执行下列语句变量 x和 y的值是多少?( )int x=100;int y=+x;A)x=100 y=100 B)x=101 y=100 C)x=100 y=101 D)x=101 y=10147、在 C#中,下列代码运行后,变量 Max的值是( )int a = 5,b = 10,c = 15,Max = 0;Max = a b ? a : b;Max = c b ? a+ : -b;System.Console.WriteLine(c);A)10 B)11 C)19 D)2049、以下语句不可以在屏幕上输出 Hello,Worl
7、d的语句是( )A) Console.WriteLine(“Hello” + ”,World”);B) Console.Write(“Hello,0” , ”World”);C) Console.WriteLine(“0,1” , ”Hello,World”);D) Console.Write(“Hello,World”);50、下列代码的运行结果是:( )class Test static void Main(string args) int a = 30, b = 20;b = a; a = 10;System.Console.WriteLine( a );System.Console.W
8、riteLine( a / b );A)10 B)10 C)30 D)100 1 0 1.551、以下的 C代码:代码运行结果为( ) static void Main(string args)System.Console.WriteLine(“运行结果: 0“, Console.ReadLine(); A)在控制台窗口显示“运行结果:”B)在控制台窗口显示“运行结果:0”C)在控制台窗口显示“运行结果:,ConsoleReadLine”D)如果用户在控制台输入 A,那么程序将在控制台显示“运行结果:A”52、请仔细阅读有如下 C#代码:int A = 3;int B = 4Console.W
9、riteLine(A + B);因为第二行代码少写了一个分号,程序运行时将( ) 。A)产生语法错误 B) 产生语义错误 C)中断 D)正常运行53、下面代码的输出结果是( ) class Test static void Main(string args) int x = 5;int y = x+;System.Console.Write (y + “ ”);y = +x;System.Console.WriteLine(y); A)5 6 B) 6 7 C) 5 6 D) 5 754、运行如下的 C#代码段将( ) int a = 10;string b = “10”;Console.Wr
10、iteLine (a + b);A)输出:20 B)输出:1010C)输出:10+10 D)编译报错,提示数据类型不匹配55、下列代码输出的结果是:( )int i = 0,j;j = +i + 8;Console.WriteLine(j+);A)8 B)9 C)10 D)编译出现语法错误,不能运行56、以下程序的输出结果是( )class Test static void Main(string args) int a=5,b=4,c=6,d;System.Console.WriteLine(“0”, d=ab?(ac?a:c):b);A)5 B)4 C)6 D)不确定二、程序流程控制01、
11、判断下列语句中哪个存在语法错误( ) 。 bool a=true,b=false,c=true;int i=0;A)if(a|b) B)if(i) C)if(i!=3) D)if(i=3)=false)02、if 语句后面的表达式应该是( )A)逻辑表达式 B)条件表达式 C)算术表达式 D)任意表达式03、为了避免嵌套的条件分支语句 if-else的二义性,C#规定:程序中的 else总是与( )组成配对关系。A)缩排位置相同的 if B)在其之前未配对的 ifC)在其之前未配对的最近的 if D)同一行上的 if04、下列语句在控制台上的输入是什么?( )if(true)System.Co
12、nsole.WriteLine(“FirstMessage“);System.Console.WriteLine(“SecondMessage“);A)无输出 B)FirstMessage C)SecondMessage D)FirstMessageSecondMessage05、如果 x=35, y=80,下面代码的输出结果是( ) 。 if (x 30) if (y = 100) Console.Write (“危险 “);else Console.Write (“报警 “);else Console.Write (“安全 “);A)危险 B)报警 C)报警 安全 D)危险 安全06、两次
13、运行下面的程序,如果从键盘上分别输入 6和 3,则输出结果是( ) 。int x;x = int.Parse(Console.ReadLine();if( x+ 5 ) Console.WriteLine( x );else Console.WriteLine( x- );A)7 和 5 B)6 和 3 C)7 和 4 D)6 和 407、在 C#中,下列代码的运行结果是( ) using System;class Test public static void Main(string args) int a=21,b=22,c=23;if( a 1)Console.Write(-count)
14、;A)32 B)321 C)21 D)224、已知如下程序,下列选项放在空白处不能输出*的是( ) int x=6;doConsole.WriteLine(“*”);x-;-x;while(_);/空白处A)x=1 B)x=2 C)x0 D)x3 25、下面代码运行后,s 的值是( ) 。int s = 0; for (int i = 1; i 10) break;if (i % 2 = 0) s += i; A)20 B)12 C)10 D)626、for(int i=1;i 18) continue;Console.Write(i + ”,”);A)16,18,20,14,22, B)16
15、,18,14,22, C)16,18,14, D)16,18,15、分析下列代码段,运行结果是什么?( ) 。static void Main(string args)string words = new string“a“,“b“,“c“;foreach (string word in words)word = “abc“;Console.WriteLine(word);A)a b c B)abc abc abc C)bc ac ab D)不能正确编译16、以下程序的输出结果是( )string str=“b856ef10“;string result= “;for(int i=0; str
16、i= a i+=3)result =stri+result;Console.WriteLine(result);A)10fe658b B)feb C)10658 D)b17、在 C#中,下列代码的运行结果是( ) using System;class Test static void Main(string args)string strings=“a”,”b”,”c”;foreach(string info in strings)Console.Write(info);A)abc B)a C)b D)C18、在 C#中,下列代码的运行结果是( ) 。string names = “ACCP”
17、,”BENET”,”BETEST”;foreach(string name in names)Console.WriteLine(name);A) ACCP B) n C) name D) “ACCP”BENET a name “BENET”BETEST m name “BETEST”es四、方法01、声明方法时,如果有参数,则必须写在方法名后面的小括号内,并且必须指明它的类型和名称,若有多个参数,需要用( )隔开。 A)逗号 B)分号 C)冒号 D)不能定义多个参数02、在 C# 语言中,方法重载的主要方式有两种,包括( )和参数类型不同的重载。A)参数名称不同的重载 B)返回类型不同的重载
18、C)方法名不同的重载 D)参数个数不同的重载03、下列关于重载的说法,错误的是( ) 。A)方法可以通过指定不同的参数个数重载B)方法可以通过指定不同的参数类型重载C)方法可以通过指定不同的参数传递方式重载D)方法可以通过指定不同的返回值类型重载04、调用重载方法时,系统根据( )来选择具体的方法A)方法名 B)参数的个数和类型C)参数名及参数个数 D)方法的返回值类型05、在 C#程序中,定义如下方法,下面选项中( A )错误的实现对该方法的方法重载。public string Do(int value,string s)/省略代码A)public int Do(int value,stri
19、ng s)/省略代码B)public string Do(string s,int value)/省略代码C)public void Do(string s,int value) /省略代码D)public void Do()/省略代码06、C#类中,下列函数重载是否合法?( )public void showInfo(int i)public bool showInfo(int i) A)合法 B)不合法07、在 C#类中, ( B)允许相同名称、不同参数个数或者参数类型的方法存在。A)方法重写 B)方法重载 C)方法取消 D)方法覆盖08、下面哪个关键字不是用来修饰方法的参数?( ) 。A
20、)ref B)params C)out D)in09、调用方法时,如果想给方法传递任意个数的参数时,应选用哪个关键字( ) 。A)ref B)out C)params D)无特殊要求10、下列参数类型中( )是 C#中不允许使用的。A)值参数 B)引用参数 C)输出参数 D)指针参数11、关于参数数组,下列说法错误的是( )A)参数数组必须是函数的最后一个参数B)参数数组必须是一维数组C)参数数组的声明同普通数组一样D)参数数组所对应的实参的个数是不固定的12、在 C#中,某程序在一个类中编写了两个同名的方法,该段代码的运行结果是( ) 。class Test static void Main
21、(string args)string musicName = ”还是觉得你最好”;Song(“分手总要在雨天”);static void Song()System.Console.WriteLine(“忘记你我做不到”);static void Song(string musicName)System.Console.WriteLine(musicName);A)忘记你我做不到 B)还是觉得你最好 C)分手总要在雨天 D)没有输出13、下面代码的输出结果是( ) 。class Test static void Main(string args) int radius = 2;double a
22、rea = GetArea(radius);System.Console.WriteLine(area); static double GetArea(int r)return 3.14 * r * r; A)2 B)3.14 C)12.56 D)6.2814、下面代码的运行结果是( )class Test static void Main(string args)int num1 = 34;int num2 = 55;Increase(ref num1, num2);System.Console.WriteLine(“0和1“, num1, num2);static void Increas
23、e (ref int num1, int num2)num1+;num2+; A)35 和 56 B)34 和 55 C)34 和 56 D)35 和 5515、下面代码输入的结果是:( )class Test static void Main(string args)int nums = 1, 2, 3, 4;TrunCate(nums);System.Console.WriteLine(nums1);static void TrunCate(int arr)arr1 = 99;A)2 B)99 C)1 D)语法错误,不能运行16、在下列程序空格处填入正确的选项( ),能够实现调用函数 sh
24、ow().class Test static void Main(string args) int test = 10;System.Console.WriteLine(“调用函数 show 前,test=0”,test);show(_);System.Console.WriteLine(“调用函数 show 后,test=0”,test);static void show(ref int i) i *= 15;System.Console.WriteLine(“i=0”,i); A)test B)out test C)ref test D)params test五、类和对象01、面向对象三个
25、基本原则是( ) 。A)抽象,继承,派生 B)类,对象,方法C)封装,继承,多态 D)对象,属性,方法02、静态构造函数只能对( )数据成员进行初始化。A)静态 B)动态 C)实例 D)静态和实例03、在 C#中,从属性的读写特性上来进行分类,可以划分为以下三种,除了( ) 。A)只读 B)只写 C)读写 D)不可读不可写 04、在 C语言中,下列关于属性的描述正确的是( ) A)属性是以 public关键字修饰的字段,以 public关键字修饰的字段也可称为属性B)属性是访问字段值的一种灵活机制,属性更好地实现了数据的封装和隐藏C)要定义只读属性只需在属性名前加上 readonly关键字D)
26、在 C#的类中不能自定义属性05、在 C#中 new关键字的作用是( )A)新建对象实例 B)定义命名空间 C)调用类 D)引入命名空间06、下列的( )不是构造函数的特征A)构造函数的函数名和类名相同B)构造函数可以重载C)构造函数可以带有参数D)可以指定构造函数的返回值07、以下关于 C#中的构造函数说法正确的是( ) 。A)构造函数可以有参数 B)构造函数有返回值C)一般情况下,构造函数总是 private类型的D)构造函数可以通过类的实例调用08、以下说法正确的是( )A)构造函数名不必和类名相同 B)一个类可以声明多个构造函数C)构造函数可以有返回值 D)编译器可以提供一个默认的带一
27、个参数的构造函数09、在 C#类中, ( ) 。A)允许有多个相同名称的构造函数 B)允许有多个不相同名称的构造函数C)至少要有一个构造函数 D)只能有一个构造函数10、C#类中的构造函数的特点是( ) 。A)一个类中,只能有一个构造函数 B)构造函数的名称与类名称一样C)构造函数在对象销毁时自动执行 D)要求构造函数至少有两个参数11、C#的构造函数分为实例构造函数和静态构造函数,实例构造函数可以对( )进行初始化,静态构造函数只能对静态成员进行初始化。A)静态成员 B)静态成员和非静态成员 C)非静态成员 D)动态成员12、在#中,创建类的实例需要使用的关键字是( )A)this B)ba
28、se C)new D)as13、在 C#编程中,访问修饰符控制程序对类中成员的访问,如果不写访问修饰符,类中成员的默认访问类型是( ) 。A)public B)private C)internal D)protected14、在类的定义中,类的( )描述了该类的对象的行为特征A)类名 B)方法 C)所属的命名空间 D)私有域15、在类的内部能够直接使用该类的( )成员名进行访问。A)私有 B)公用 C)保护 D)任何16、在 C#中, ( )访问修饰符修饰的成员可以由当前程序集访问。A)public B)protected C)internal D)private17、在 C#中,class
29、关键字前面的关键字是表示访问级别,下面哪个关键字的访问级别是表示只有在同一个程序集内该类是可访问的? ( )。A)public B)private C)protected D)internal18、在 C#程序中,使用关键字( )来定义静态成员。A)malloc B)class C)private D)static19、在 C#中,创造一个对象时,系统最先执行的是( )中的语句。A)Main 方法 B)构造函数 C)初始化函数 D)字符串函数20、在 C#中设计类时,如何将一个可读可写的公有属性 Name修改为只读属性?( )A)将 Name的 set块删除 B)将 Name的 set块置空C
30、)将 Name的 set块前加修饰符 private D)将 Name添加 readonly修饰符21、在 C#类中,使用( )关键字来设置只读属性。A)get B)let C)set D)is22、在下列 C# 代码中, ( )是类 Teacher 的属性。class Teacher int age=13;string name;public string Name getreturn name;setname=value;public void SaySomething()/A)Name B)name C)age D)SaySomething23、分析一下 C#片段中的属性,该属性是( )
31、属性。private string name;public string Name getreturn name;A)可读可写 B)只写 C)只读 D)静态24、在 C#中,下列关于属性的使用正确的是( ) 。A) private int num;public string Numgetretuen num;setnum=value;B) private int num;public int Numgetretuen num;setnum=value;C) private int num;public int Numget num=value;set retuen num;D) private
32、 int num;private int Numgetretuen num;setnum=value;25、C#中 TestClass为一自定义类,其中有以下属性定义public void Property使用以下语句创建了该类的对象,并使变量 obj引用该对象:TestClass obj = new TestClass();那么,可通过什么方式访问类 TestClass的 Property属性? ( ) A)obj.Property B)MyClass.Property C)obj : Property D)obj.Property () 26、C#中MyClass 为一自定义类,其中有以下
33、方法定义 public void Hello()使用以下语句创建了该类的对象,并使变量obj 引用该对象:MyClass obj = new MyClass();那么,可如何访问类MyClass 的Hello 方法?( )。A)obj.Hello(); B)obj:Hello(); C)MyClass.Hello(); D)MyClass:Hello();27、以下程序的输出结果是( ) 。class Program static void Main(string args)MyStruct s1 = new MyStruct(1, 2);s1.x = 2;s1.Sum();class MyS
34、tructpublic int x;public int y;public MyStruct(int i, int j)x = i;y = j;public void Sum()int sum = x + y;System.Console.WriteLine(“the sum is 0“,sum );A)the sum is 4 B)the sum is 3 C)the sum is 2 D)the sum is 028、class Studentstring type = ”学员”;internal string name = ”李明”;public class Test static vo
35、id Main(string args)Student stu = new Student(); /代码 1System.Console.WriteLine(stu.type); /代码 2System.Console.WriteLine(stu.name); /代码 3在 C#中,关于以上 C#代码的描述正确的是( ) 。A)代码 1错误 B)代码 2错误 C)代码 3错误 D)代码都正确29、分析下列程序:class MyClass private string _sData = “;public string sDataset_sData = value; 在 Main 函数中,在成功创
36、建该类的对象 obj 后,下列哪些语句是合法的? ( )A)obj.sData = “It is funny!“; B)Console.WriteLine(obj.sData);C)obj._sData = 100; D)obj.set(obj.sData);30、以下类 MyClass 的属性 Count 属于( )属性. class MyClass int i;public int Count get return i; A)只读 B)只写 C)可读写 D)不可读不可写31、在下面的类定义中,缺省构造函数的作用是( )public class MyClassprivate MyClass(
37、) public static int Counter;public static int IncrenentCounter()return +Counter;A)在创建类的实例时初始化类的域B)因为是 private的,因此不起任何作用C)防止创建类的实例D)什么都不作32、下列语句是类 Myclass的一部分,obj 是 Myclass的一个对象。void Change(int i)i+;public void test()int a=100;Change(a);Console.WriteLine(a);则调用 obj.test()后,控制台输出( )A)0 B)100 C)101 D)1
38、 33、下列语句是类 Myclass的一部分,obj 是 Myclass的一个对象。void Change(ref int i)i+;public void test()int a=100;Change(ref a);Console.WriteLine(a);则调用 obj.test()后,控制台输出( )A)101 B)100 C)0 D)1六、继承01、面向对象编程中的“继承”的概念是指( )A)对象之间通过消息进行交互 B)派生自同一个基类的不同类的对象具有一些共同特征C)对象的内部细节被隐藏 D)派生类对象可以不受限制地访问所有的基类对象02、在 C#的类结构中,class 关键字前面
39、的关键字是表示访问级别,下面哪个关键字表示该类只能被这个类的成员或派生类成员访问? ( )。A)public B)private C)internal D)protected03、类的以下特性中,可以用于方便地重用已有的代码和数据的是( ).A)多态 B)封装 C)继承 D)抽象04、下列关于 C#继承说法中,哪个选项是正确的( )A)派生类可以继承多个基类的方法和属性。B)派生类必须通过 base关键字调用基类的构造函数C)继承最主要的优点是提高代码性能D)继承是指派生类可以获取其基类特征的能力。05、下列关于继承机制的描述中不正确的是( )A)提供继承机制有利于提高软件模块的可重用性及可扩
40、充性。B)继承机制使面向对象的语言能够更准确的描述客观世界,使软件开发方式变简单。C)继承机制使得软件开发过程效率更高。D)继承机制使得软件开发的难度相对增加。06、下列关于继承的理解,错误的是( )A)子类可以从父类中继承其所有的成员。B)无论是否声明,子类都继承自 object(System.object)类。C)假如,类 M继承自类 N,而类 N又继承自类 P,则类 M也继承自类 P。D)子类应是对基类的扩展。子类可以添加新的成员,但不能除去已继承成员的定义。07、以下关于继承的说法错误的是( ) 。A)object 类是所有类的基类B)派生类不能直接访问基类的私有成员C)protect
41、ed 修饰符既有公有成员的特点,又有私有成员的特点D)基类对象引用不能引用派生类对象08、继承具有( ) ,即当基类本身也是某一类的派生类时,派生类会自动继承间接基类的成员。A)规律性 B)传递性 C)重复性 D)多样性09、在 C#语言中,以下关于继承的说法错误的是( ) 。A)一个子类不能同时继承多个父类 B)任何类都是可以被继承的C)子类继承父类,也可以说父类派生了一个子类D)Object 类是所有类的父类10、在 C#中,如果类 C继承自类 B,类 B继承自类 A,则以下描述正确的是( ) 。A)C 不仅继承了 B中的成员,同样也继承了 A中的成员B)C 只继承了 B中的成员C)C 只
42、继承了 A中的成员D)C 不能继承了 A或 B中的成员11、在 C#中,定义派生类时,指定其基类应使用的语句是( )。A)Inherits B) : C)Class D)Overrides12、在 C#程序中,如果类 B要继承类 A,类 B正确的定义为( ) 。A)public class B inherit A B)public class B : AC)public class B : A D)public class B from A13、关于 base关键字,下列使用方法错误的是:( )A)在子类中,base 可以调用父类的构造函数 B)在子类中,base 关键字可以访问父类的公共属性
43、 C)在子类中,base 关键字不可以调用父类的 protected成员 D)在子类中,base 关键字不可以调用父类的 private成员14、派生类访问基类的成员,可使用( )关键字A)base B)this C)out D)external15、C#程序中的类 MyClass中的成员变量 var1如下:public class MyClassprivate int var1; 则可以访问 var1的有( ) 。A)在 MyClass类中 B)在 MyClass的派生类中16、下面关于虚方法说法错误的是:( )A)使用 virtual关键字修饰虚方法 B)虚方法必须被其子类重写C)虚方法可
44、以有自己的方法体 D)虚方法可以实现多态性17、C#代码如下,代码的输出结果是( ) 。class Program static void Main(string args)Student s = new Student() ;s.sayHi();class Person public virtual void sayHi()System.Console.WriteLine(“你好,我是一个人”); class Student : Person public override void sayHi()System.Console.WriteLine(“你好,我是一名学生”);A)学生 B)你好
45、,我是一名学生C)你好,我是一个人 D)空18、在定义类时,如果希望类的某个方法能够在派生类中进一步改进,已处理不同的派生类的需要,则该将方法声明成( )A)sealed B)public C)virtual D)override19、以下关于密封类的说法,正确的是( )A)密封类可以用作基类 B)密封类可以是抽象类C)密封类永远不会有任何派生类 D)密封类或密封方法可以重写或继承20、当开发者不希望自己编写的类被继承,或者有的类已经没有再被继承的必要时,我们通常对 class使用哪一个关键字?( )A)sealed B)virtual C)abstract D)override21、在 C#
46、中利用 sealed修饰的类( ) 。A)密封,不能继承 B)密封,可以继承 C)表示基类 D)表示派生类七、抽象类和接口01、下列关于多态的说法中,哪个选项是正确的( )A)重写虚方法时可以为虚方法指定别称B)抽象类中不可以包含虚方法C)虚方法是实现多态的唯一手段D)多态性是指以相似的手段来处理各不相同的派生类。02、以下说法正确的是( ) 。A)虚方法必须在派生类中重写,抽象方法不需要重写B)虚方法可以在派生类中重写,抽象方法必须重写C)虚方法必须在派生类中重写,抽象方法必须重写D)虚方法可以在派生类中重写,抽象方法也不需要重写03、在 C#中,使用( )访问修饰符修饰的方法被称之为抽象方
47、法。A)this B)abstract C)new D)virtual04、下面关于抽象类的说法正确的是 ( )A)抽象类可以被实例化 B)含有抽象方法的类一定是抽象类 C)抽象类可以是静态类和密封类 D)抽象类中的抽象方法可以在其它类中重写05、下面关于抽象类的说法正确的是?( )A)抽象类只能做子类 B)抽象类可以被实例化C)抽象类不能被实例化 D)一个抽象类只能有一个子类06、下列关于抽象类的说法错误的是( ) 。A)抽象类可以实例化 B)抽象类可以包含抽象方法C)抽象类可以包含抽象属性 D)抽象类可以引用派生类的实例07、在 C#的语言特性中,关于抽象类,以下描述正确的是( ) 。A)在抽象类包含全部已经实现的方法的时候,抽象类可以实例化B)子类可以同时实现多个抽象