C#期末考试试题 下载本文

static void WA(ref int[] a, int n) { for(int i=0;i

答案:采用选择排序的方法对数组a中的n个整数按照从小到大的次序重新排列。

9. 写出以下程序的运行结果。 using System; class Test {

public static void Main () {

int[ ] a ={2,4,6,8,10,12,14,16,18}; for (int i=0; i<9; i++) { (“ ”+a[i]); if ((i+1)%3==0) (); } } }

答案:2 4 6

8 10 12 14 16 18 int k=i;

for(int j=i+1;j

if(a[j]

int x=a[i]; a[i]=a[k]; a[k]=x; }

10. 写出以下程序运行结果。 using System; class Test {

public static void Main ()

{

int s=0;

for (int i=1; ; i++) { if (s>50) break; if (i%2==0) s+=i; }

(\ } }

答案:i,s = 15, 56

五、简答题(10分,每题5分)

1.如何区别重载方法

不同的参数类型,不同的参数个数,不同的参数顺序

#用多种修饰符来表达类的不同性质。根据其保护级C#的类有五种不同的限制修饰符,请写出并指出它们之间的区别是什么

答:

public 可以被任意存取

protected只可以被本类和其继承子类存取

internal只可以被本组合体(Assembly)内所有的类存取,组合体是C#语言中类被组合后的逻辑单位和物理单位,其编译后的文件扩展名往往是“.DLL”或“.EXE”。

protected internal唯一的一种组合限制修饰符,它只可以被本组合体内所有的类和这些类的继承子类所存取。

private只可以被本类所存取。

3.接口和抽象类的区别是什么

答:接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。在抽象类

中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。

4.什么是抽象类

答案:抽象类是含有一个或多个抽象方法的类,抽象类不能实例化。

基于C#的OOP技术课程 复习题

一、 判断题(本大题共10个小题,每小题1分,共10分)

1. 在同一行上可以书写多条语句,每条语句间用分号分隔。(t )

2. 在数据类型转化时,只能通过类型转换关键字或Convert类实现。(f ) 3. 接口与类同样是面向对象程序设计的核心,是创建对象的模版。(F ) 4. 委托是将方法作为参数传递给另一方法的一种数据类型。事件与委托没有

关系。(F )

5. 可以重写私有的虚方法。(T )

6. 使用Directory类的Move()方法可以删除文件。(T ) 7. 不能指定接口中方法的修饰符。(T )

8. 在定义数组时不允许为数组中的元素赋值。(F )

9. 接口与类同样是面向对象程序设计的核心,是创建对象的模版。( ) 10.如果要实现重写,在基类的方法中必须使用virtual关键字,在派生类的

方法中必须使用overrides关键字。(T )

11.在C#中,所有类都是直接或间接地继承类而得来的。(T ) 12.在C#中,任何方法都不能实现多继承。(F ) 13.在C#中,子类不能继承父类中用private修饰的成员变量和成员方法。(F

)

14.可以阻止某一个类被其他类继承。(T )

15.使用FileInfo类的Copy()方法可以复制文件。(T )

二、选择题(本大题共20个小题,每小题2分,共40分) 1. 在 C#中,表示一个字符串的变量应使用以下哪条语句定义 B

str; str;

str as string

* str;

2. C#中 MyClass 为一自定义类,其中有以下方法定义:A

public void Hello(){…}

使用以下语句创 建了该类的对象,并使变量 obj 引用该对象,那么,访问类MyClass的Hello方法正确的是:

MyClass obj = new MyClass();

3. 分析下列程序中类 MyClass 的定义 D

class BaseClass { public int i; } class MyClass:BaseClass { public new int i;}

则下列语句在 Console 上的输出为_______. MyClass y = new MyClass(); BaseClass x = y; = 100;

(\确定

4. 能正确表示逻辑关系“a>=10 或 a<=0”的 C#语言表达式是_D___?

>=10 or a<=0 >=10|a<=0 >=10&&a<=0 >=10||a<=0

5. 以下关于 for 循环的说法不正确的是__A__?

循环只能用于循环次数已经确定的情况 循环是先判定表达式,后执行循环体语句 循环中,可以用 break语句跳出循环体

循环体语句中,可以包含多条语句,但要用花括号括起来? 6. 有如下程序 Using system; C

Class Example1 {

Public Static void main() {

Int x=1,a=0,b=0; Switch(x) {

Case 0:b++,break; Case 1:a++,break; Case 2:a++,b++;break; } (“a={0},b={1}”,a,b);

} }的输出结果是 =2,b=1 =1,b=1 =1,b=0 =2,b=2

7. 关于 C#语言的方法,下列叙述中正确的是_A___?

A.方法的定义不能嵌套,但方法调用可以嵌套 B.方法的定义可以嵌套,但方法调用不能嵌套 C.方法的定义和调用都不能嵌套 D.方法的定义和调用都可以嵌套 8. 下列程序的结果是: B

Using system; Class Example1 {

Static long fib(int n) {

If(n>2) return(fib(n-1)+fib(n-2)); Else rerurn(2);

} Public Static void main() { (“{0}”,fib(3)); } }

9. 调用重载方法时,系统根据___B_____来选择具体的方法?

A.方法名

B.参数的个数和类型 C.参数名及参数个数 D.方法的返回值类型

10.下列的___D____不是构造函数的特征?

A.构造函数的函数名和类名相同 B.构造函数可以重载 C.构造函数可以带有参数 D.可以指定构造函数的返回值

11.已知类 B 是由类 A继承而来,类 A 中有一个为 M 的非虚方法,现在希

望在类 B 中也 定义一个名为 M 的方法,若希望编译时不出现警告信息,则在类 B中声明该方法时,应使 用____B____方法?