C#考试复习总结
选择题
1. 下列数据类型中,不属于基本数据类型的是( D )。
A.数值类型 B.字符类型和字符串类型 C.布尔类型与对象类型 D.结构类型
2. 要使用变量score来存储学生某一门课程的成绩(百分制,可能出现小数部分),则最好
将其定义为( C )类型的变量。 A. int B. decimal C. float D. double 3. 下列标示符中,非法的是( B )。 A. MyName B. c_sharp C. abc2cd 4. 已定义下列变量: int n; float f; double df; df = 10; n = 2;
下列语句正确的是( C )。 A. f = 12.3; B. n = df;
C. df = n = 100; D. f=df;
5. 下列表达式中,有语法错误的是( A )。
A. n = 12%3.0(n为int类型) B. 12/3.0; C. 12/3;
D. ‘a’ > ‘b’;
6. 已知a,b,c均为整形变量,下列表达式的值等于( A )。
b = a = ( b = 20 ) + 100 A. 120 B. 100 C. 20 D. true
7. 下列语句中,不能够正确定义长度为4的数组a的语句是( C )。
A. int [] a = new int []{1,2,3,4;} B. int [] a = {1,2,3,4};
C. int [] a = new int[4] {1,2,3}; D. int [] a = new int[4] {1,2,3,4};
8. 若二维数组a有4行6列,那么该数组中第15个元素的访问方法是( D )。
A. a[15] B. a[3,3] C. a[3][3] D. a[2,2]
9. 以下装箱、拆箱语句中,错误的有( B )。 A.object obj = 100; int m = (int)obj; B. object obj = 100; int m = obj;
C. object obj = (int)100; int m = (int)obj; D. object obj = (object)100; int m = (int)obj;
D. _123
10. 下面有关变量和常量的说法,正确的是( C )。
A. 在程序运行过程中,变量的值是不能改变的,而常量是可以改变的。 B. 常量定义必须使用关键词const
C. 在给常量赋值的表达式中不能出现变量
D. 常量在内存中的存储单元式固定的,变量则是变动的
11. 对于语句“if(表达式)语句块”,下列说法正确的是( D )。
A. 语句中的“表达式”可以是任意类型的表达式
B. 语句中的“表达式”可以是整型表达式或者布尔表达式
C. 如果“表达式”的值为非零值则执行后面的语句块,为零则不执行
D. 不管“表达式”的形式如何,但其返回值必须是布尔类型,如果返回true则执行后面的语句块,否则不执行
12. 下列代码段中,语法正确的是( A )。
A. int n=0; B. int n=0; C. for(int I = 0; sum=0; i<10;i++) D. int sum=0; if(n==1) if(n=1) { int i=0; { { sum = sum+i; while(1) int x = n ; int x = n; } {
} } sum=sum+i; if(i==9)break; }
13. 下面关于if语句和switch语句的说法,正确的是( C )。
A. 如果在if语句和switch语句中嵌入break语句,则在程序执行过程中一旦执行到break
语句,则会结束相应语句的执行,而转向执行其后面的语句 B. 凡是能够使用if语句的地方就可以使用switch语句,反之亦然 C. if语句有3种基本形式,if…、if…else…、if…else if… else…
D. if语句本质上是实现“单判断二分支”的选择结构,switch语句则是用于实现“单判断多分支”的选择结构。
14. 下面关于for语句的说法,错误的是( B )。
A. for语句中的3个表达式都可以省略
B. for语句的3个表达式,如果第二个表达式的返回值为true,则执行循环体中的语句,知道第3个表达式的返回值为false
C. for语句的3个表达式中,第二个表达式必须是布尔类型的表达式,其他两个可以是任意类型的表达式
D. for语句的3个表达式中,第一个表达式执行且仅执行一次;每当循环体语句被执行以后,第3个表达式都跟着被执行一次
15. 下面关于while语句和do…while语句的说法,正确的是( A )。
A. 对于do…while语句,当循环条件表达式的值是为true时执行循环体语句,为false时终止语句的执行
B. While语句比do…while语句具有更高的执行效率
C. 对于do..while语句,当循环条件表达式的值为false时执行循环体语句,为false时终止语句的执行
D. 两者的功能是一样的,具体使用哪一种主要有程序员的喜好来决定 16. 对于foreach语句和for语句,下列说法错误的是( B )。
A. for语句与foreach语句在结构上不一样,前者有3个表达式,表达式间用分号隔开;后者仅有一个“表达式”,形式为“数据类型 变量 in 集合表达式”
B. 语句“for(;true;);”是合法的,但是个死循环;“foreach(true);”也是合法的,也是一个死循环
C. 语句“for(;true;);”是合法的,但是个死循环;而“foreach(true);”是非法的 D. 语句块“int*+ a = ,1,2-;foreach(int I in a);”是合法的 17. 对于跳转语句,下列说法错误的是( A )。
A. goto语句可以实现从程序的一个地方跳转到任意一个地方 B. goto语句的跳转功能限于一个同一个语句块内
C. break语句可以终止整个循环语句,而continue只是提前结束本次循环,但循环语句仍在执行
D. 不管在哪里,一旦执行到return语句,会结束当前整个函数的执行 18. 下列关于类的定义,错误的是( D )。
A. class A B. class A C. class A class A
{ { { { void f() {} void f() {} private void f() {return ;} f() {} } } } }
19. 假设类B继承了类A,下列说法错误的是( C )。
A. 类B中的成员可以访问类A中的公有成员 B. 类B中的成员可以访问类A中的保护成员 C. 类B中的成员可以访问类A中的私有成员 D. 类B中的成员可以访问类A中的静态成员
20. 在类A中试图重载构造函数,并使用构造函数创建对象;
class A { A() {}
public void A(int x) {} //语句1 public A(int x, int y) {} //语句2 }
class Program { static void Main(string[] args)
{ A a = new A(); //语句3
A b = new A(100,200); //语句4 } }
其中,正确的语句包括( B )。 A. 语句2和语句4
B. 语句1、语句3和语句5 C. 语句1、语句2和语句3 D. 语句4和语句5 21. 在类A中定义了属性y: Class A(); {
Public int y
{
get{return 1;} Set{} } }
并试图通过下列代码实现对属性y的访问; A b=new A(); b.y = 2; int x=b.y;
对此下列说法正确的是( D )
A属性y可读可写,因此变量x的值为2.
B属性y可读但不可写,因此语句“b.y=2;”是错的。
C属性y可写,但不可读,因此语句“int x=b.y”是错误的。 D 属性y可读可写,变量x的值是1. 22. 静态成员,下列说法正确的是( B )
A 同一个类的静态成员,类实例化后,在不同的对象中形成不同的静态成员。 B 在实例化后,同类型的对象都共享类的静态成员,静态成员只是一个版本。 C 在类定以时静态成员属于类,在类实例化后静态成员属于对象。
D 在类实例化后静态成员也别实例化,因此不同的对象有不同的静态成员。 23. 对于多态,下列说法错误的是( B ) A 多态实上就是重载,他们本质上是一样的 B 多态可以分为编译时多态和运行时多态。前者的特点是在编译时就能确定要调用成员方法的哪个版本,后者则是在程序运行时才能确定要调用成员方法的哪个版本。 C 编译时多态是在程序运行时才能确定要调用成员方法的哪个版本,而运行时多态在编译时就能确定要调用成员方法的哪个版本
D 多态和重载是两个弯曲不同的概念,前者是通过定义虚方法和重写虚方法来实现,后者是通过对同一个函数名编写多个不同的实现代码来完成。 24 下面代码在类A中重载了减号“—”: Class A {
Private int X;
Public static A operator –(A b,A c) {
A a=newA(); a.setx(3); A b=newA();b.setx(6); A c=a-b;
Int n= c.getx(); 结果n的值为( C ) A -3 B -6 C- 18 D 9
25 下面关于接口的说法,错误的是( D )。 A. 接口中定义的方法都必须是虚方法 B. 接口中定义的方法可以编写其实现代码
C. 继承接口的类可以提供被继承接口中部分成员的实现代码 D. 接口中的所有方法都必须在其派生类中得到实现
26 下面关于命名空间的说法,错误的是( C ) A. C#中,命名空间可有可无,看需要来定义和使用
B. 同一个命名空间的成员不能重名,不同命名空间中的成员可以重名
C. 使用命名空间的好处是,不但在不同命名空间中的成员可以重命名,而在同一个命名空间中的成员也可以重名
D. 命名空间为程序的逻辑结构提供了一种良好的组织方法 27 执行下列两条语句,结果S2的值为( D ) string s =”abcdefgh”;
string s2 = s.Substring(2,3);
A. “bc” B “cd” C “bcd” C”cde” 28对于下列生命的委托和定义的类: Class A {
Public int f(int i) {
Return 0; }
public void g(int j) { }
Public static int h(int k) {
Return 0; } }
下面语句中,那些事正确的( B )
MyDelegate d1 = new MyDelegate(A.h); //语句1 A a = new A();
MyDelegate d2 =new MyDelegate(a,f); //语句2 MyDelegate d3 = new MyDelegate(a.g);//语句3 MyDelegate d4 = new Mydelegate(a.h);//语句4
A 语句1、语句2、语句、语句4 B 语句1、语句2 C语句3、语句4 D 语句2、语句3
填空题
1. 标准窗体应用程序有3种类型:对话框界面(Dialog)应用程序、单文档界面(SDI)应用程序和多文档界面(MDI)应用程序。
2. C#中所有的类都继承 Object 类,所有的窗体控件都继承 Control 类。
3. 字体对话框类和打开文件对话框类分别是 FontDialog类 和 OpenFileDialog类 。 4. 控件中用于设置弹出式对话框的属性是 ContextMenuStrip 。
5. Form类(窗体类)的FormClosing(object sender,FormClosingEventArgs e)事件处理函
数中,利用参数e可以阻止窗口的关闭,实现的代码是 e.Cancel = true;。 6. 菜单可以分为两种形式: 主菜单 和 弹出式菜单 。 7. File类中判断给定文件是否存在的方法是 File.Exists() ,Directory类中判断给定文件是否