C#试题

选择题:

1、在C#中,下面代码运行后,变量c的值是(c )

int a=15,b=10;

float c=(float)a/b;

a) 0

b) 1

c) 1.5

d) 5

2、C#语言与Java语言一样,也是一种面向对象的语言,C#语言中声明类的关键字是(b)。(选择一项)

a) using

b) class

c) namespace

d) Main

3.在C#中,下列代码的运行结果是(d )

namespace ConsoleApplication2

{

class Program

{

static void Main(string[] args)

{

int x=6;

switch(x){

case 6:

case 7:

Console.WriteLine("今?天?¨?是o?周¨1末?");

break;

case 1:

Console.WriteLine("今?天?¨?是o?星?期¨21");

break;

case 2:

Console.WriteLine("今?天?¨?是o?星?期¨22");

break;

default:

Console.WriteLine("你?完a¨o成¨|任¨?务?了¢?吗e?ê?");

break;

}

Console.Read();

}

}

}

编译出错

输出:今天是星期一

输出:今天是星期二

输出:今天是周末

4. 在C#中,下列代码的运行结果是(b )

(选择一项)

using System;

class Test

{

Public static void Main(string[] args)

{

int a=21,b=22,c=23;

if(a

Console.WriteLine(b);

else

Console.WriteLine(a+b+c);

}

}

a)21

b)22

c)23

d)66

5.在下列C#代码中,程序的命名空间是(a)

using System;

namespace Test{

class Program{

static void Main(string[]args){

Console.Write(“Hello World!”);

}

}

}

Test

Main

namespace

Program

6.C#语言中的类Console包含两个输入方法:Write()和WriteLine()。它们之间的唯一区别是(a )。(选择一项)

a) WriteLine()方法输出后换行,Write()方法输出后不换行

b) WriteLine()方法可以格式化输出,Write()方法不可以

c) Write()方法输出后换行,WriteLine()方法输出后不换行

d) Write()方法可以格式化输出,WriteLine()方法不可以

7.以下的C#程序代码,程序运行时在控制台打印输出值为(c)

int count=3;

while(count>1)

{

Console.Write(- -count);

}

a) 32

b) 321

c) 21

d) 2

8.关于C#中的switch case 语句,以下说法正确的是(c)

switch判断的表达式可以是整型或者字符型,但不能是字符串型

在该语句中最多不能超过5个case子句

在该语句中只能有一个default子句

在该句中只能有一个break语句

9.在以下C#类中,(b)是控制台类,利用它我们可以方便的进行控制台的输入输出。

a) Control

b) Console

c) Cancel

d) Write

10.C#程序的(a)方法被成为程序的大门,应用程序从这里开始运行

a) Main()

b) Begin()

c) Start()

d) main()

11.Console是C#语言中的控制台类,它负责向控制台输出不同格式的字符串,在格式字符串中,可以使用(b)来实现水平制表输出。

\r

\t

\n

\d

12.在c#的条件判断语句switch case结构中,(d)子句用于指定在找不到匹配项时执行的动作

a) continue

b)goto

c)else

d)default

13.使用Visual Studio2005开发C#控制台应用程序包括3个步骤,其中不包括(c)

a)新建项目

b)生成解决方案

c)保存项目

d)调试

14.在c#中,下列代码的运行结果是(c)

using System;

class Test{

static Void Main(string [] args){

int a=10,b=20;

int c=a>b?a++:--b;

Console.WriteLine(c);

}

}

10

11

19

20

15.在C#语言中,main()方法是程序的大门,应用程序从此处开始运行。以下mainO方法中,存在错误的是(a)

a) static string Main(string[]args){}

b) static int Main(string[]args){}

c) static void Main(){}

d) static void Main(string[]args){}

16.以下关于C#代码的说法正确的是(a)

for(int i=l;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标签不能贯穿到另一个标签,不能运行

b) 输出149

c) 输山123246369

d) 正确运行,但没有输出

17.多数编程语言都提供数据组这种数据存储结构来存储同种类型的多个数据元素。在C#中定义了如下数据。选项中有关该数组的说法中错误的是(b )

int []array;

array=new int [10];

该数组最多包含10个元素

该数组的第一个数组元素索引值为1

该数组被使用前必须先赋值

该数组定义与int [] array=new int[10];等价

18.使用C#语言开发程序时,对一组三个元素的数据(20,89,54),采用冒泡排序法按升序排序,需要比较(d)次

1

2

3

4

在C#中,下列代码运行的结果是(c)

Using System;

Class Test

{

Static void Main()

{

String name=”http://m.wendangku.net/doc/bb4a021cc281e53a5802ff18.html”;

Foreach(char c in name)

{

Console.Write(c);

}

}

}

输出:name

输出:http://m.wendangku.net/doc/bb4a021cc281e53a5802ff18.html

编译错误,存在语法错误

输出:ccc

20.在C#中,下列代码的运行结果是(c)

int[]age=new int[]{16,18,20,14,22};

foreach(int i in age){

if(i>18)

continue;

Console.Write(i.ToString()+””);

}

a)16,18,20,14,22

b)16,18,14,22

c)16,18,14

d)16,18

21.现有如下一段C#,该代码的运算结果是(b )。

public static void Main(){

for (int i=1;i<=3;i++){

switch(i){

case 1:

Console.write(i.ToString());

break;

default;

Console.write((i*2).toString());

break;}

}

}

}

a)146

b)有编译错误

c)246

d)123

在C#中,下列代码的运行结果是(a)

using System;

class Test{

static void Main(string[] args){

string[] strings={“a”,”b”,”c”};

foreach(string info in strings)

{

Console.Write(info);

}

}

}

abc

a

b

C

23.在C#程序中,已知某一维数组的名称为myArray,则该数组的长度为(a)

a) myArray.Length

b)myArray[].length

c)myArray[Length]

d)myArray(Length)

在C#程序中,以下初始化一维数组的语句中错误的是(d)

a) int[]array=new int[5]{1,2,3,4,5};

b) int[]array=new int[]{1,2,3};

c) int[]array={1,2,3,4};

d) int[]array=new int[5]{1,2,3,4};

25.在C#语言的循环结构中,首先执行一次,然后再判断条件的循环结构是( b)

a) while循环

b) do…while循环

c) for循环

d) foreach循环

26.在C#程序中,使用(a)关键字来创建数组

a) new

b) array

c) staic

d) this

27.在C#语言中,下列异常处理结构中有错误的是(a)

a)catch{}finally{}

b) try{}finally{}

c) try{}catch{}finally{}

d) try{}catch{}

28.C#编译器将C#程序编译成(c)样的代码

A. 汇编语言代码

B. 机器语言代码

C. 微软中间语言代码

D. 二进制代码

29.下列(b)语言不是面向对象的

A. C#

B. VB

C. http://m.wendangku.net/doc/bb4a021cc281e53a5802ff18.html

D. C++

30.C#程序从上机到得到结果的几个操作步骤依次是( A )

A. 输入、编辑、运行

B. 编译、连接、运行

C. 输入、运行、编辑

D. 编辑、编辑、连接

31.可用作C#程序用户标识符的一组标识符是( B )

A. void define +WORD

B. a3_b3 _123 YN

C. for -abc Case

D. 2a DO sizeof

32.能作为C#程序的基本单位是( B )。

A. 字符

B. 语句

C. 函数

D. 源程序文件

33.x>0 && x<=10的相反表达式为(A )。

A. x<=0 || x>10

B. x<=0 && x>10

C. x<=0 || x<=10

D. x>0 && x>10

34.在下面循环语句中循环体执行的次数为( B )。

for(int i=0; i

if(i>n/2) break;

A. n/2

B. n/2+1

C. n/2-1

D. n-1

35.在类作用域中能够通过直接使用该类的( D )成员名进行访问。

A. 私有

B. 公用

C. 保护

D. 任何

36.假定一个10行20列的二维整型数组,下列哪个定义语句是正确的( C )。

A. int[]arr = new int[10,20]

B. int[]arr = int new[10,20]

C. int[,]arr = new int[10,20]

D. int[,]arr = new int[20;10]

37.以下正确的描述是( B )。

A. 函数的定义可以嵌套,函数的调用不可以嵌套

B. 函数的定义不可以嵌套,函数的调用可以嵌套

C. 函数的定义和函数的调用均可以嵌套

D. 函数的定义和函数的调用均不可以嵌套

在c#中,表示一个字符串变量应使用以下(B)语句定义

A.CString str;

B.string str;

C.Dim str as string

D.char *str

在类的定义中,类的(B)描述了该类的对象的行为特征

A.类名

B.方法

C.所属的命名空间

D.私有域

.若必须为类MyClass添加访问修饰符,并使MyClass的可访问域保持不变,则应选择(C)

A.private

B.protected

C.internal

D.public

在定义类时,如果希望类的某个方法能够在派生类中进一步改进,已处理不同的派生类的需要,则该将方法声明成(C)

A.sealed 方法

B.public 方法

C.virtual 方法

D.override 方法

c#程序中,可使用try···catch 机制来处理程序出现的(B)错误

A. 语法

B. 运行

C. 逻辑

D. 拼写

43.下列语句创建了(D)个string 对象

String [,] strArray = new string[3,4]

A.0

B.3

C.4

D.12

在c#中,预处理指令#region(区域,范围)和#endregion的作用是(B)

A.注释#region和#endregion之间的代码

B.为#Code Editor 定义一段可折叠代码区

C.#region 和#endregion之间的代码在debug版本中不参加编译

D.#region 和#endregion之间的代码在release版本中不参加编译

Web表单中,按钮的默认事件是(A)

A. Click 事件

B. Load 事件

C. Lnit 事件

D. Command 事件

46.循环语句“for(int i=0; i

A. 1

B. n-1

C. n

D. n+1

1 47.假设在程序中a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式abc 的表达式是( D )

A. 1.0/a*b*c

B. 1/(a*b*c)

C. 1/a/b/(float)c

D. 1.0/a/b/c

48.在以下C#程序的异常处理代码中,不论是否出现异常,肯定会运行的代码行是(c)。Try{

Console.WriteLine(“This is first step!”); //1

}

catch(Exception ex){

Console.WriteLine(“This is second step!”); //2

}

finally{

Console.WriteLine(“This is third step!”); //3

}

(选择一项)

1和2

2和3

1和3

都会运行

49.在WinForms高级控件中,(b)控件常常放在窗体的底部,用来显示一些基本信息。(选择一项)

a) 工具条

b) 状态条

c) 选项卡

d) 图片框

50.以下(B)属性可以得到ArrayList的容量

A.Count

B.Capacity

C.IsSynchronized

D.Length

填空题:

1.c#支持的循环有___、___、___、__和____循环。

2.c#支持的隐式转换和显示转换中我们因该尽量用______转换。

3.c#中类的类别分为公有类、_____和_______。

4.c#中类中构建的方法有动态方法和_______。

5.c#中要调用某个类的动态方法首先要_______才能调用。

6.c#中类名和方法名用___命名法。Camel命名法用于____和______的命名。

7.c#中接口的命名方法是________。

8.c#中实体化一个类时我们要在等式的右边加一个_______。

9.c#中类中的attribute的定义中我们要使用___________来防止出现连锁反应。

10.c#中同一个类里面对同一个方法的覆载的要求是方法签名中要有不同的返回值

或______等。

11.关联是_______之间的关系。连接是______之间的关系。

12.抽象类和接口是不可以_________。

13.Student[_]_studentBody_=_new_Student[100];

studentBody[0]=1;

studentBody[2]=2;

中的错误是

14.string[_]_names_=_new_string[3];

names[0]_=_“Lisa”;

names[1]=”Jackson”;

names[2]=”Zachary”;

的更简便的写法是

15.在显示Array或ArrayList中的每一个元素时比循环更好的方法是_______

16.一个类不可以多重继承几个父类但是可以多重继承__________

17.当一个类继承一个抽象类时没有完全实现抽象类中的方法时这个类将会变成__________类。

18.在一个接口中定义的方法不能有_______。

19.在一个类里面定义一个静态attribute那么在实体化这个类的所有对象中这个attribute将__ _____。

20.统一建模语言的英文缩写是_______

21.在建模中考虑各种将与系统打交道的用户,和他们使用系统的各种情形,确保你发掘

了所有可能被遗漏的不那么明显的需求的技术叫:

22.在建模中通过鉴别你的应用程序需要关心的真实世界事物的不同分类,掌握应用程序的数据方面情况,并判断它们之间怎样互相关联的技术叫:_________

23.C#中一切皆为___________

24.我们在写c#语言是我们要面向_____而非_____。

25.我们在写c#语言时我们要对____封闭,对___开放。

26.Console.WriteLine(“RP”);和Console.Write(“RP”);的区别是_____________

27.Console.Read();的作用是__________

28.c#中attribute的类型分为____类型和_____类型。

29.c#中bool类型只有两个值分别是______和____。

30.object类是所有类的____。

31.所谓对象,是一种将状态(数据、数据)和行为(操作、方法)合成到一起的软件构造。

32.关于命名惯例有Pascal和Camel命名法,命名一个类或方法时通常用Pascal法,命名一

个属性时一般用Camel法。

33.真正的面向对象语言,支持用户自定义、继承、多态三种关键机制。

34.如果对象A为了满足某个请求,而寻求另一个对象B的帮助,这被称作是A对B的委托。

35.对象A能访问对象B的唯一途径,是A能访问B的句柄。

36.C#定义了五种访问修饰关键字:public、private、protected、internal、protected internal。

37.如果声明属性时没有明确指定其可访问性,则会拥有默认值private。

38.C#类中声明方法的顺序有/没有关系。

39.OO编程语言趋同的手法,是提供取值(get)和赋值(set)方法,分别用来读取和修

attribute。

40.根据限制通过公共访问器刚问对象的是有attribute,我们得到以下好处:1、避免对封装

数据的未经授权的访问;2、帮助确保数据完整性;3、当类的是有思想必须修改时,限制在整个应用程序内导致的连锁反应。

41.如果没有明确地为一个类声明其实体构造器,C#会自动为它提供一个缺省的无参数实体

构造器。

42.构造器名称,必须与所属类的名称保持一致。

43.继承是一种强大的机制,它通过指出新旧类之间的不同之处,在旧类基础上定义一个新

类。

44.在使用继承时,原始的类被称作基类,新类被称作派生类。

45.在继承的情形中,对象同时是派生类和该派生类的所有基类的实体。

46.要覆载一个方法,必须先在所属类的基类中,使使用virtual关键字把该方法声明为虚方

法。派生类可以在方法声明中使用override关键字来重新实现基类虚方法。派生类中的覆载方法必须声明为何基类方法拥有同样的作用域、返回值、名称和参数列表。

47.有如下代码:

如果Student s = new Student();

http://m.wendangku.net/doc/bb4a021cc281e53a5802ff18.html = “Hello”;

s = new Student();

则http://m.wendangku.net/doc/bb4a021cc281e53a5802ff18.html = null;

48.多态是指两个或多个属性不同类的对象,对同一个消息做出不同响应的能力。

49.一个类可同时扩展单个基类,和实现一个或多个接口。

50.静态attribute/property与类相关联,而不是关联到具体的单个对象。

51.静态property和方法不能通过单个对象访问,但可以食用点符号,通过整个类调用。

52.静态方法访问所属类的attribute时,有一个重要限制:它们不能访问类的非静态attribute。

53.静态方法不能被派生类覆载,并且不能被声明为抽象方法。

判断题:

1、c#面向对象的程序语言有继承性和多态性还有封装性答案对

2、接口不能通过方法来实现答案对

3、C#中的数据类型分为简单类型和引用类型答案对

4、C#是一种安全的、稳定的、简单的、优雅的,面向对象的编程语言。答案对

5、C#不是由C和C++衍生出来的面向对象的编程语言。答案错

6、C#源程序文件一般用.cs作为扩展名答案对

7、C#中所有的类型实质上都是从(object)类派生而来的。答案对

8、结构是值类型,而类是引用类型。答案对

9、c#面向对象的程序语言特点:代码好维护,安全,隐藏信息答案对

10、类和对象的区别在于万物都是对象,是个实体,而概念是个类上的描述答案错

11、camel命名法是首字符大写,后续的每个词首字符大写,而其他字符则小写答案错

12、在c#中,变量被声明时并同时被自动赋予初始值,在访问变量前,必须明确的为其赋

值答案错

13、c#是大小写不敏感的语言答案错

14、为了明确告诉c#编译器我们愿意接受精度损失,必须进行显示转换,把表达式值转换为括号里的目标类型答案对

15、方法头包括方法名称、可选的传入形式参数和方法的返回类型答案对

16、较好的编程习惯是在一个方法体中包含多个return语句答案错

17、Pascal命名方法是名称的第一个字母大写,后面的每个单词首字母大写,其他字母小写

答案对

18、所有类和方法名都是用pascal命名方法答案对

19、接口实现类必须提供接口所申明的所有方法答案对

20、抽象类要比具体类更接近于抽象类型答案对

21、通过提供对抽象类申明的所有抽象方法的非抽象实现,就能从抽象类派生出新类答案对

22、结对关系的概念只适用于关联,不适用于链接。

答案对

23、实现接口是一种“要么全要,要么不要”的事情

答案对

24、Camel命名法是用于公共attribute的名称

答案错

25、参数是一个本地变量,在方法头中申明,当方法开始执行时出现。

答案对

26、聚合是一种特殊形式的关联。

答案对

27、继承是一种强大的机制,他通过指出新旧类之间的不同之处,在旧类的基础上定义一个新类

答案对

28、和用点符号向对象传递消息一样,我们也可以用点符号存取一个对象的attribute。

答案对

29、在类间或对象间存在不同的结构关系

答案对

30、在所有情况下,存取作用范围,返回值和方法签名必须保持一致,这样覆盖才会起作用。答案对

31、用foreach遍历群集时能够用break跳出循环。(no)

32、关于对象的访问,对象A向对象B传递消息的唯一途径是A能访问B的句柄。(yes)

33、构造器的名称,可以与所属类的名称不一样。(no)

34、C#支持多重继承。(no)

35、一切类的基类是object类,并且可以直接继承它。(yes)

36、C#中已经不包含指针。(yes)

37、抽象类里的方法一定不能含有实现。(no)

38、精度最高的预定义类型是浮点类型。(no)

39、Object类的Equals方法可以用来判断两个整型值时候相等。(no)

40、一旦进入一个foreach代码块,就不能试图修改foreach引用变量的值。(yes)

41、C#群集,除Array外,都被设计成能持有一般对象。(yes)

42、ArrayList能够包含任何类型的元素,但不能混合放置不同类型的对象。(no)

43、C#中一个类可以实现多个接口。(yes)

44、接口的实现类必须提供接口所有声明的所有方法的具体版本,这样才能满足编译器的要

求。(yes)

45、当一个类实现一个接口时,实现该接口的类通过覆载的手段实现接口。(no)

46、从抽象类派生的类不一定要覆载所有的抽象方法、提供具体版本;如果一个或多个抽象

单发没有被覆载,则该派生类也是一个抽象类。(yes)

47、如果一个类实现的两个或多个接口中的方法拥有同样的方法签名,则在实现列中只需要

实现其中一个。(yes)

48、接口中可以定义方法,还可以定义属性。(yes)

49、静态方法访问类的attribute时,可以访问类的所有属性。(no)

50、静态方法不能被派生类覆载。(yes)

51、静态方法不能被声明为抽象方法。(yes)

简答题:

1. 简述private、protected、public修饰符的访问权限。

private : 私有成员, 在类的内部才可以访问。

protected : 保护成员,该类内部和继承类中可以访问。

public : 公共成员,完全公开,没有访问限制。

2. C#中的接口和类有什么异同。

抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。

但接口是一个行为的规范,里面的所有东西都是抽象的!

一个类只可以继承一个基类也就是父类,但可以实现多个接口。

3. 面向对象的思想主要包括什么?

封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。

继承:子类拥有父类的所有数据和操作。

多态:一个程序中同名的不同方法共存的情况。

4.什么是对象?

所谓对象,是一种将状态和行为合成到一起的软件构造,用来描述真是世界的一个对象。

5.什么是多态?

多态是指两个或多个属于不同类的对象,对同一个消息(方法调用)做出不同响应的能力。

6. override与重载的区别

override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要

Override 是进行基类中函数的重写。为了适应需要。

7.对象建模的目标是什么?建模方法包含哪几个部分?

对象缄默的目标,是为要表写的系统制定一种精确、简明和可理解的面向对象模型。

建模方法包含过程、符号系统、工具三个部分。

8.建立一个names群集,并单个赋值”Lisa””Jackson””Zachary”(至少使用两种方法)。

一:string[] names = {”Lisa”,”Jackson”,”Zachary”};

二:string[] names = new string[3];

names[0] = “Lisa”;

names[1] = “Jackson”;

names[2] = “Zachary”;

9.举例说明C#中foreach用法。

参考:

ArrayList myArray = new ArrayList();

myArray.Add("1");

myArray.Add("2");

myArray.Add("3");

foreach (object s in myArray)

{

Console.WriteLine(s);

}

10. 解释构造器,并写一个无参数实体构造器的例子。

构造器负责类中成员变量的初始化。C#的类有两种构造器:实例构造器和静态构造器。实例构造器负责初始化类中的实例变量,它只有在用户用new关键字为对象分配内存时才被调用。

参考:

private string name;

public string Name

{

get

{

return name;

}

set

{

name = value;

}

}

相关推荐
相关主题
热门推荐