C#阶段测试卷二(带参考答案)

  • 格式:doc
  • 大小:49.00 KB
  • 文档页数:4

C#程序设计阶段测验题(2)
一.单选题(15*4=60)
1.执行完下面的程序代码后,在控制台输出内容是什么?
string str = "g**oo*d";
str.Remove(1, 2);
Console.WriteLine(str);
A. good
B. goo*d
C. null
D. g**oo*d
2.执行完下面的程序代码后,在控制台输出内容是什么?
StringBuilder sbstr = new StringBuilder("g**oo*d");
sbstr.Replace("*", "");
Console.WriteLine(sbstr);
A. good
B. g*oo*d
C. null
D. g**oo*d
3.下列的语句定义了一个类CzVector,要求在类中对操作符"+"进行重载,以实现两个向量相加的操作,下列操作符重载的声明语句哪一项是正确的?
class CzVector
{
double[] _values; //向量的各个元素值
}
A. public static double operator +( CzVector v1, CzVector v2)
B. public CzVector operator +( double v1, CzVector v2)
C. public static CzVector operator +( CzVector v1, CzVector v2)
D. public static CzVector operator +( double v1,double v2)
4. 下列关于类的成员属性的说法,哪一项是不正确的?
A.属性通过属性访问函数来控制对字段的读取和修改。

B.属性可以定义成虚拟的,在派生类中对其进行重载,因此属性具有多态性。

C.属性同字段一样可以有默认值。

D.在属性的访问函数中可以进行各种控制和计算。

E属性可以定义成静态的,也可以定义成抽象的。

5.下列描述错误的是哪一项?
A.抽象类和接口中的方法成员都不提供实现代码。

B.抽象类中可以定义字段成员而接口不可以。

C.抽象类和接口都不能被实例化。

D.一个类可以有多个基类和多个基接口。

6.下列关于构造函数的描述正确的是哪一项?
A.构造函数可以声明返回类型。

B.构造函数不可以用private修饰
C.构造函数必须与类名相同
D.构造函数不能带参数
7. 下面关于C#中变量类型的描述正确的是哪一项?()
A.变量类型分成值类型和引用类型,值类型就是指C#内置的数据类型,比如int B. 变量类型分成值类型和引用类型,值类型变量和引用类型变量存放的都是真正的
数据
C. 变量类型分成值类型和引用类型,所有内置的数据类型都是值类型,所有用户定
义的数据类型都是引用类型
D. 变量类型分成值类型和引用类型,值类型变量直接存放真正的数据,引用类型变
量的是指向真正数据的内存地址
8. 接口是一种引用类型,在接口中可以声明哪些成员,但不可以声明公有的字段或私
有的成员变量?
A.方法、属性、索引器和事件;
B.方法、属性信息、属性;
C.索引器和字段;
D.事件和字段;
9.以下的C#代码,试图用来定义一个接口:
public interface IFile
{
int A;
int delFile()
{
A = 3;
}
void disFile();
}
关于以上的代码,以下描述不正确的是哪一项?
A.以上的代码中存在的错误包括:不能在接口中定义变量,所以int A;代
码行将出现错误;
B.以上的代码中存在的错误包括:接口方法delFile是不允许实现的,所以
不能编写具体的实现函数;
C.代码void disFile();声明无错误,接口方法可以没有返回值;
D.代码void disFile();应该编写为void disFile(){};
10.下列关于C#中索引器理解正确的是哪一项?
A.索引器的参数必须是两个或两个以上
B.索引器的参数类型必须是整数型
C.索引器没有名字
D.索引器可以定义为静态的或非静态的
11.下列关于类的继承的说法正确的是哪一个?
A.子类将继承父类所有的成员
B.子类将继承父类的非私有成员
C. 子类只继承父类public成员
D. 子类只继承父类的方法成员,而不继承属性
12.下列关于抽象方法的说法中正确的是哪一项?
A.抽象方法可以有方法体
B.抽象方法可以出现在非抽象类中
C.抽象方法是没有方法体的方法
D.抽象类中的方法都是抽象方法
13.声明一个委托:public delegate int myCallBack(int x);
则用该委托产生的回调方法的原型应该是下列哪一项?
A.void myCallBack(int x) ;
B.int receive(int num) ;
C.string receive(int x) ;
D.不确定的;
14.在接口的定义中,不可以包含以下哪种成员?
A.方法 B.属性C.字段 D.事件 E.索引器
15.下面是几条定义类的语句,不能被继承的类是哪一个?
A.abstract class Figure
B.class Figure
C.public class Figure
D.sealed class Figure
二、阅读程序,写出运行结果(20分)
using System;
class A
{
public void F(){ Console.WriteLine("执行基类的F方法"); }
public virtual void G( ) { Console.WriteLine("执行基类的G方法"); }
}
class B:A
{
new public void F( ) { Console.WriteLine("执行派生类的F方法"); }
public override void G( ) { Console.WriteLine("执行派生类的G方法"); } }
class T est
{
static void Main()
{
B b=new B();
A a=b;
a.F();
b.F();
a.G();
b.G();
}
}
运行结果如下:
执行基类的F方法
执行派生类的F方法
执行派生类的G方法
执行派生类的G方法
三.程序填空(20分)
下列程序段是使用属性score来保证类Student的私有变量m_score不为负数,请将程序补充完整。

class Student
{
private int m_score;
public ___(1)_____ Score
{
get {____(2)______; }
set { m_score=___(3)_______ ; }
}
}
(1)处填写:int
(2)处填写:return m_score>=0?m_score:0
(3)处填写:value>=0?value:0。