1、C#总复习题一、 单项选择题1能作为C#程序的基本单位是( B )。A. 字符 B. 语句 C. 函数 D. 源程序文件2C#语言是微软.NET公共语言运行环境中内置的核心程序设计语言,是一种( B )。 (A)面向过程程序设计语言(B)面向对象程序设计语言(C)跨平台程序设计语言(D)机器语言3C#应用程序中,用主方法指明程序执行的开始点,主方法的名字规定为( C )。 (A)class(B)main(C)Main(D)MainWay4. C#中的注释方法有三种,下列注释方法中错误的是( D )。(A)单行注释“/”(B)多行注释“/*和*/”(C)XML注释“/”(D)HTML注释“”5.
2、 在控制台应用程序中,如果在程序开头使用 using System; 语句引入了System命名空间,则下列对Read()和ReadLine()方法调用错误的是( D )。(A)System.Console.Read();(B)Console.Read();(C)Console.ReadLine();(D)Read();6. 在C#的Windows应用程序中,不论任何控件,共同具有的是( B )属性。(A)Text(B)Name(C)ForeColor(D)Caption7. 要使文本框控件能够显示多行而且能够自动换行,应设置它的_(B)_属性A.MaxLength和 Multline B.M
3、ultlineh和 WordWrapC.PassWordChar 和 Multline D.MaxLength和 WordWrap8窗体中有一个年龄文本框 txtAge,下面(D)代码可以获得文本框中的年龄值。A.int age = txtAge; B. int age = txtAge.Text;C. int age = Convert.ToInt32(txtAge);D. int age = int.Parse(txtAge.Text);9下面(C)代码能向组合框 cboYears 添加一项。A.int year = 1997; cboYears.Items.Add(“year”);B.
4、int year = 1997; cboYears.Add(year);C. int year = 1997; cboYears.Items.Add(year.ToString();D. int year = 1997; cboYears.Add(year.ToString();10.当 ListView 的视图为 Details 时,以下(A)属性可以设置显示的各个列。A.Columns B. Groups C. Items D.SubItems11. 以下标识符中,正确的是_(A)A._nName B.typeof C.6b D.x5# 12C#语言中,基本整型数据类型(int)所占用的存
5、储空间为( C )个字节。(A)1(B)2(C)4(D)813C#语言中,双精度实型数据类型(double)所占用的存储空间为( D )个字节。(A)1(B)2(C)4(D)814下面的运算符中,优先级别最低的是( D )。(A)new(B)!=(C)?:(D)=15设有整型变量x,则表达式x=5/8运算后,变量x的值为( A )。(A)0(B)0.625(C)0.6(D)0.6316C#语言中,字符串常量123n456的长度(有效字符个数)是( C )。(A)6(B)7(C)8(D)917. 为了将字符串 str=“123,456”转换成整数 123456,应该使用以下哪条语句? (A)A.
6、int Num = int.Parse(str); B.int Num = str.Parse(int);C.int Num = (int)str;D.int Num = int.Parse(str,Globalization.NumberStyles.AllowThousands);18在程序中如果要使用系统保留字(关键字)作为自定义标识符,必须使用字符( A )作为引导符。(A)(B)$(C)#(D)19. 关于 C#程序的书写,下列不正确的说法是_(D)A.区分大小写B.一行可以写多条语句C.一条语句可写成多行D.一个类中只能有一个 Main()方法,因此多个类中可以有多个 Main()
7、方法20. 下面的C#表达式中,描述了数学关系xyz的是( B )。 (A)(x=y) AND (y=z)(B)(x=y) & (y=z)(C)(x=y=z) (D)(x=y) & (y=z)21. 执行C#语句序列:int i; for (i = 0; i+ b?(ac?a:c):b); A.5 B.4 C.6 D.不确定23写出以下程序的运行结果。using System;class Test public static void Main() int x = 5; int y = x+; Console.WriteLine(y); y=+x; Console.WriteLine(y);
8、答案: 5724 已知 a,b,c的值分别是 4,5,6,执行下面的程序段后,判断变量 n的值为_(C) if(cb) N=a+b+c; else if(a+bc) N=c-a-b; else N=a+b;A.3 B.-3 C.9 D.1525下面对 i 值的输出结果说法正确的是_.(A) namespace Answer class Program static void Main(string args) int i do i+; while(i=0);27)以下程序段的输出结果是 CA 12 B 15 C 20 D 25int i, j, m = 0; for (i = 1; i = 1
9、5; i += 4) for (j = 3; j 7) n-; Console.WriteLine(m=0,n ); 29下面所列选项中,能够正确定义具有10个数据元素一维整型数组a的是( A )。(A)int a = new int10;(B)int a10;(C)int a = int10;(D)int a = int(10);30下面所列选项中,不能正确定义并初始化一维数组b的是( D )。(A)double b=new double51,2,3,4,5;(B)double b=new double1,2,3,4,5;(C)double b= 1,2,3,4,5;(D)double b=
10、new 1,2,3,4,5;31.始化一维数组的语句,指出其中正确的是_(D)A.int arr1 =6,5,1,2,3;B.int arr1=new int ;C.int arr1=new int 6,5,1,2,3;D.int arr1;arr1=6,5,1,2,3;32下面所列选项中,能够正确定义2行3列二维整型数组a的是( B )。(A)int a = new int 23;(B)int , a = new int 2,3;(C)int 23; (D) int , a = int 2,3;33. 有定义语句:int ,a=new int5,6; 则下列正确的数组元素的引用是_(C)A.
11、a(3,4) B.a(3)(4) C.a34 D.a3,434在C#语言中,表示数组长度属性的关键字是( D )。(A)Len(B)Size(C)Long(D)Length35. 以下程序的输出结果是: (C)Class Example1 Public Static void main() int i; int a=new int10; for(i=9;i=0;i-) ai=10-i; Console.Writeline(0,1,2 ,a2,a5,a8); A.2,5,8 B.7,4,1 C.8,5,2 D.3,6,936.下列的数组定义语句,正确的是_(D)A.int a=new int51
12、,2,3,4,5B.int,a=new int a34C.inta=new int 3;D.int a=1,2,3,4;37. 以下所列的个方法头部中,正确的是_(C)A.void play(var a:Integer,var b:integer)B.void play(int a,b)C.void play(int a,int b)D.Sub play(a as integer,b as integer)38.函数调用不可以( D )。 A. 出现在一个表达式中 B. 出现在执行语句中 C. 作为一个函数的实参 D. 作为一个函数的形参 39. 以下正确的描述是( B )。 A. 函数的定义
13、可以嵌套,函数的调用不可以嵌套 B. 函数的定义不可以嵌套,函数的调用可以嵌套 C. 函数的定义和函数的调用均可以嵌套 D. 函数的定义和函数的调用均不可以嵌套 40. 若用数组名作为函数调用的实参,传递给形参的是( A )。 A. 数组的首地址 B. 数组中第一个元素的值 C. 数组全部元素的值 D. 数组元素的个数 41. 以下错误的描述是( D )。 A. 被调用函数中可以不用return语句 B. 被调用函数中可以用多个return语句 C. 被调用函数中,如果有返回值,就一定要有return语句 D. 被调用函数中,一个return语句可返回多个值给调用函数42. 在面向对象程序设计
14、的概念中,对类(class)的描述,错误的是( D )。(A)类(class)是一组具有相同数据结构和相同操作的对象的集合(B)类(class)用来定义对象可执行的操作(C)类(class)是创建对象实例的模板,对象是类的一个实例(D)当应用程序通过类(class)创建一个对象时,该对象就是一个窗口43. 在默认的情况下,省略的类访问修饰符是( A )(A)private(B)public(C)protected(D)internal44. 在下面的类声明中,属于私有字段的是( D )class Person public string name; public string sex; pri
15、vate int age; double weight;(A)name sex(B)age (C)weight(D)age weight45. 类的属性中,能够修改字段值的代码块是( B )(A)get代码块(B)set代码块(C)find代码块(D)modification代码块46. 下列类定义代码,当用来声明对象car,并用Car car = new Car(); 实例化后,可以通过car对象直接赋值的字段是( D )。public class Car public string type; string No; private int heavy; double speed; prot
16、ected string owner; public string price; private string color; (A)type No(B)heavy owner(C)type owner price(D)type price47.类的以下特性中,可以用于方便地重用已有的代码和数据的是( ).A.多态 B.封装 C.继承 D.抽象答案:C48. 在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成_(C)A.sealed 方法 B.public 方法 C.virtual 方法 D.override 方法60. 假定AA为一个类,
17、a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为( D )。 A. x(a) B. xa C. x-a D. x.a49. 假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D )。 A. x.a B. x.a() C. x-GetValue() D. x.GetValue() 50. 假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为( A )。 A. a B. AA:a C. a() D. AA:a()51Label控件的边框
18、样式由( B )属性决定。(A)FlatStyle(B)BorderStyle(C)BackColor(D)AutoSize52(A)List(B)ListIndex(C)ListCount(D)ItemData53使用( D )方法,可以把一个字符串数组的内容全部添加到ListBox控件中。(A)Add()(B)Remove()(C)Clear()(D)AddRange()54访问组合框的( A )属性,可以获得用户在组合框中输入或选择的数据。(A)Text(B)ItemData(C)SelectedIndex(D)SelectedValue二、 填空题1.C#语言是一种 B面向对象的 、全
19、新的程序设计语言,是微软.NET公共语言运行环境中内置的核心程序设计语言。2.在定义C#语言的标识符构成时, G需要区分 字母符的大小写形式。备选项:3. C+源程序文件的默认扩展名为(cpp )。 4. 由C+源程序文件编译而成的目标文件的默认扩展名为( obj )。5. C+程序从上机到得到结果的几个操作步骤依次是(_编辑、_编译 、_连接_、运行 )。 6. C+语言是在_C_语言的基础上发展起来的。 7. 行尾使用注释的开始标记符为_/_。8. 使控件是否可以对用户交互作出响应的属性是 _ Enabled _ 。9. 控制控件是否显示的属性是 _ Visible _ 。10 若要在文本
20、框中输入密码,常指定 _ PasswordChar _ 属性。11. 若某复选框某时刻CheckState属性的值为Indeterminate,则其属性Checked的值为 Unchecked 。12.用于控制ListView控件中的各项显示方式的属性是_ View _ 。13. 一个完整程序中必须有一个名为_Main_的函数。14 一个函数的函数体就是一条_复合_语句。15.在C#程序中,程序的执行总是从_Main_方法开始的。16、在C#中,bool类型只有两种值,分别是_true_和_false_。17、在C#中,使用_const_关键字声明符号常量。18.设x为int型变量,请写出描述
21、“-10=x=10”的C#语言表达式_-10=x & x=10_。19.若k为int整型变量且赋值15.请写出k+后表达式的值A)_15_和变量值B)_16_.20.10=10&X=30_。21. C#语言中的关系运算符按优先级分别是_ =_,_!= =_ .22.将下列数学式改写成C#语言的关系表达式或逻辑表达式A) _a=b|ac_.B) _x-4|x4_.A a=b 或a423.C#语言中,数组属于引用数据类型,即数组内容所占用的存储单元是 一组连续的内存区域C ,数组变量的值是这组存储单元的起始地址。24.无论是一维数组、多维数组、还是不规则数组,在C#语言中对数组的定义都分为两个步骤
22、:定义数组变量; H数组变量初始化 。25.数组在定义时可以进行初始化,即在定义数组时为其指定初始值。C#语言中规定,初始化值序列中的数据个数 F必须与数组的长度完全一致 。26.数组元素在程序中使用下标变量的形式表示。作为变量个体而言,下标变量与它同类型的普通变量(简单变量)是等价的,即数组的下标变量和普通变量的 A用法相同 。27面向对象的程序设计允许用 I实体 或对象的思想方法来分析和设计应用程序,从而使软件开发过程更接近人类的思维过程。28. 当应用程序通过类创建一个对象时,用户只要使用对象的 B属性(property) 和方法进行相应的操作,而不必关心其内部是如何实现的,这样就有助于
23、实现程序结构的模块化和代码重用。29. 如果访问修饰符使用 A public ,则将类的访问类型指定为公共的,被声明的类可以在其它的项目中使用。30. 类的属性通常属性包括 D get代码块和set代码块 访问或修改字段的值。31. 类的成员包括 J数据成员 和方法成员,使用属性可以实现对数据成员的良好封装。32、面向对象的语言具有_封装 性、_继承_性、_多态_性。33在C#中,在实例化类对象时,系统自动调用该类的_构造函数_进行初始化。8在C#中,当一个对象离开它的作用域或不再被使用时,系统将会自动调用类的_析构函数_。34、在C#中,类的静态成员属于_类_所有,非静态成员属于类的实例所有
24、。35一般将类的构造方法声明为_ public或公有_ 访问权限。如果声明为private,就不能创建该类的对象。36.如果声明属性时没有明确指定其可访问性,则会拥有默认值private。在继承的情形中,对象同时是派生类和该派生类的所有基类的实体。37. .多态是指两个或多个属性不同类的对象,对同一个消息做出不同响应的能力。38.一个类可同时扩展单个基类,和实现一个或多个接口。39.在使用继承时,原始的类被称作基类,新类被称作派生类。40.C#定义了五种访问修饰关键字:public、private、protected、internal、protected internal。三简答题:1. 简述
25、 private、 protected、 public修饰符的访问权限。private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 2. C#中的接口和类有什么异同。抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。但接口是一个行为的规范,里面的所有东西都是抽象的!一个类只可以继承一个基类也就是父类,但可以实现多个接口。3. 面向对象的思想主要包括什么?封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部
26、。继承:子类拥有父类的所有数据和操作。多态:一个程序中同名的不同方法共存的情况。4.什么是对象?所谓对象,是一种将状态和行为合成到一起的软件构造,用来描述真是世界的一个对象。5.什么是多态?多态是指两个或多个属于不同类的对象,对同一个消息(方法调用)做出不同响应的能力。6. override与重载的区别override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要Override 是进行基类中函数的重写。为了适应需要。7如何区别重载方法?不同的参数类型,不同的参数个数,不同的参数顺序8.什么是抽象类?答案:抽象类是含有一个或多个抽象方法的类,抽象类不能实
27、例化。9一个C#控制台应用程序主要由哪几个部分构成?答案:(1)导入其他系统预定义元素部分;(2)命名空间;(3)类;(4)方法(主方法、事件响应处理过程)10C#程序中可以使用哪些书写注释的方法?它们分别适合用于什么场合?答案:C#中的注释方法有三种:(1)单行注释 在一个语句行上,用双斜杠“/”作为引导符,其后的任何内容均为注释信息,编译时被忽略,通常用于注释字符串较短的场合。(2)多行注释 从“/*”开始,到“*/”结束,多行注释通常用于需要书写较大量注释的情况(3)XML注释 在一个代码行上,用“/”开始,其后的任何内容均为注释信息,编译时被提取出来,形成一个特殊格式的文本文件(XML
28、),用于创建文档说明书。四. 判断题1、c#面向对象的程序语言有继承性和多态性还有封装性 答案 对2、接口不能通过方法来实现 答案 对3、c#面向对象的程序语言特点:代码好维护,安全,隐藏信息 答案 对4、通过提供对抽象类申明的所有抽象方法的非抽象实现,就能从抽象类派生出新类 答案 对5、继承是一种强大的机制,他通过指出新旧类之间的不同之处,在旧类的基础上定义一个新类答案 对6、C#支持多重继承。(no)7、一切类的基类是object类,并且可以直接继承它。(yes)8、抽象类里的方法一定不能含有实现。(no)9、C#中一个类可以实现多个接口。(yes)10、接口中可以定义方法,还可以定义属性
29、。(yes)11、静态方法访问类的attribute时,可以访问类的所有属性。(no)12、静态方法不能被派生类覆载。(yes)13、静态方法不能被声明为抽象方法。(yes)14、在C#中,类的构造函数和析构函数都不能被继承。()15、在C#中,定义一个类时,声明了一个构造函数,则编译器不会再提供默认的构造函数。()16、在C#中,在类的属性声明中,只有get访问器表明属性只能读出而不能写入。()17、C#不支持运算符重载。()18、C#不支持私有继承和保护继承。()19、在C#中,定义一个类时,用户不可以声明一个析构函数,因为析构函数是由编译器自动生成的。()20、C#中抽象方法是隐式的虚方
30、法,实现抽象方法用关键字override。()五阅读程序,写结果:1.运行以下程序段,结果是( 150 )double k,t;t=0;for(int n=1;n=10;n+) for(k=1;k=5;k+) t=t+k;Console.WriteLine(t);2. 运行以下程序段,结果是( 25 )using System;class Sumw static void Main( ) int i=1, sum=0; while (i=10) sum+=i; i+=2; Textbox1.text=“总和为:”+sum.ToString(); 3下面代码的输出结果是(5 7)。int x =
31、 5;int y = x+;Console.WriteLine(y);y = +x;Console.WriteLine(y);4如果 x=35, y=80,下面代码的输出结果是(报警)if (x 30) if (y = 100) Console.WriteLine(危险!); else Console.WriteLine(报警!); else Console.WriteLine(安全);5.using System;class Test static int a = 1, 2, 3, 4, 5, 6, 7, 8 ; public static void Main() int s0, s1, s
32、2; s0 = s1 = s2 = 0; for (int i = 0; i 8; i+) switch (ai % 3) case 0: s0 += Test.ai; break; case 1: s1 += Test.ai; break; case 2: s2 += Test.ai; break; Console.WriteLine(s0 + + s1 + + s2); 答案:9 12 156.using System;class Teststatic void LE(ref int a, ref int b) int x = a; a = b; b = x; Console.writeL
33、ine (a + “ “ +b);public static void Main () int x=10, y=25;LE(ref x, ref y); Console.writeLine (x + “ “ +y);答案:25 10 25 107. public static void Main ()int i, j; int a=76,83,54,62,40,75,90,92,77,84; int b=60,70,90,101; int c=new int4; for( i=0;i=bj) j+; cj=cj+1; for(i=0;i4;i+) Console.Write(0,ci); Co
34、nsole.WriteLine(); ; Console.ReadLine();答案:2,1,5,28.using System;class Program static void Main(string args) MyClass y = new MyClass(); BaseClass x = y; x.i = 100; Console.WriteLine(0, 1, x.i, y.i); class BaseClass public int i;100,0class MyClass : BaseClass public new int i;9.using System;namespace
35、 P7_3 public class VirtualInheritSample public static void Main() DerivedClass c = new DerivedClass(); c.Call(); public class BaseClass Derived ADerived BBase ADerived B public void A() Console.WriteLine(Base A); public virtual void B() Console.WriteLine(Base B); public class DerivedClass : BaseClas
36、s public new void A() Console.WriteLine(Derived A); public override void B() Console.WriteLine(Derived B); public void Call() this.A(); this.B(); (BaseClass)this).A(); (BaseClass)this).B(); 10.using System;class MyTest public void swap(ref int x, ref int y) int temp = x; x = y; y = temp; class test static void Main() a=8 b=6 int a = 6, b = 8; MyTest app = new MyTest(); app.swap(ref a, ref b); Console.WriteLine(a=0 b=1, a, b); 六程序填空:1若打印如下图案,画线处应填入()。* * * *