C#总复习题
C#总复习题
一、单项选择题
1.能作为C#程序的基本单位是( B)。
A. 字符
B. 语句
C. 函数
D. 源程序文件
2.C#语言是微软.NET公共语言运行环境中内置的核心程序设计语言,是一种(B)。
(A)面向过程程序设计语言(B)面向对象程序设计语言
(C)跨平台程序设计语言(D)机器语言
3.C#应用程序中,用主方法指明程序执行的开始点,主方法的名字规定为(C)。
(A)class (B)main (C)Main (D)MainWay
4. C#中的注释方法有三种,下列注释方法中错误的是(D)。
(A)单行注释“//”(B)多行注释“/*和*/”
(C)XML注释“///”(D)HTML注释“”
5. 在控制台应用程序中,如果在程序开头使用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)Caption
7. 要使文本框控件能够显示多行而且能够自动换行,应设置它的___(B)______属性?
A.MaxLength和 Multline
B.Multlineh和 WordWrap
C.PassWordChar 和 Multline
D.MaxLength和 WordWrap
8.窗体中有一个年龄文本框 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. 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.SubItems
11. 以下标识符中,正确的是____?(A)
A._nName
B.typeof
C.6b
D.x5#
12.C#语言中,基本整型数据类型(int)所占用的存储空间为(C)个字节。
(A)1 (B)2 (C)4 (D)8
13.C#语言中,双精度实型数据类型(double)所占用的存储空间为(D )个字节。
(A)1 (B)2 (C)4 (D)8
14.下面的运算符中,优先级别最低的是(D)。
(A)new (B)!= (C)?:(D)=
15.设有整型变量x,则表达式x=5/8运算后,变量x的值为(A)。
(A)0 (B)0.625 (C)0.6 (D)0.63
16.C#语言中,字符串常量@"123\n456"的长度(有效字符个数)是(C)。
(A)6 (B)7 (C)8 (D)9
17. 为了将字符串str=“123,456”转换成整数 123456,应该使用以下哪条语句? (A)
A.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()方法
20. 下面的C#表达式中,描述了数学关系x≥y≥z的是(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++ < 4; ) ;后,变量i的值是(A)。
(A)5 (B)4 (C)1 (D)0
22. 以下程序的输出结果是__(C)__?
Using system;
Class Example1
{
Public Static void main() {
int a=5,b=4,c=6,d;
Console.writeline(" {0}",d=a>b?(a>c?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);
}
}
答案: 5
7
24 已知 a,b,c的值分别是 4,5,6,执行下面的程序段后,判断变量 n的值为____?(C) if(c
else if(a+b else N=a+b; A.3 B.-3 C.9 D.15 25下面对 i 值的输出结果说法正确的是_____.(A) namespace Answer { class Program { static void Main(string[] args) { int i do{ i++; } while(i<5) Console.WriteLine(“i 值的为:{0}”,i) } } } A.i 的值为: 5 B.i 的值为: 6 C.i 的值为: 7 D.i 的值为: 8 26) 以下程序段的输出结果是A A 1 B 3 0 C 1 -2 D死循环 int x=3; do { Console.WriteLine(" {0}", x-= 2); } while(!(--x>=0)); 27)以下程序段的输出结果是 C A 12 B 15 C 20 D 25 int i, j, m = 0; for (i = 1; i <= 15; i += 4) for (j = 3; j <= 19; j += 4) m++; Console.WriteLine("m={0}",m ); Console.ReadLine(); 28)以下程序段的输出结果是B A 10 B 9 C 10 D 9 9 8 9 8 8 7 8 7 6 int n=10; while (n>7) { n--; Console.WriteLine("m={0}",n ); } 29.下面所列选项中,能够正确定义具有10个数据元素一维整型数组a的是( A)。 (A)int [] a = new int[10]; (B)int a[10]; (C)int [] a = int[10]; (D)int [] a = int(10); 30.下面所列选项中,不能正确定义并初始化一维数组b的是(D )。 (A)double [] b=new double[5]{1,2,3,4,5}; (B)double [] b=new double[]{1,2,3,4,5}; (C)double [] b= {1,2,3,4,5}; (D)double [] b=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 [2][3]; (B)int [ ,] a = new int [2,3]; (C)int [2][3]; (D) int [ ,] a = int [2,3]; 33. 有定义语句:int [,]a=new int[5,6]; 则下列正确的数组元素的引用是____?(C) A.a(3,4) B.a(3)(4) C.a[3][4] D.a[3,4] 34.在C#语言中,表示数组长度属性的关键字是(D)。 (A)Len (B)Size (C)Long (D)Length 35. 以下程序的输出结果是: (C)Class Example1 { Public Static void main() { int i; int []a=new int[10]; for(i=9;i>=0;i--) a[i]=10-i; Console.Writeline("{0},{1},{2} ",a[2],a[5],a[8]); }} A.2,5,8 B.7,4,1 C.8,5,2 D.3,6,9 36.下列的数组定义语句,正确的是____?(D) A.int a[]=new int[5]{1,2,3,4,5} B.int[,]a=new int a[3][4] C.int[][]a=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. 函数的定义可以嵌套,函数的调用不可以嵌套 B. 函数的定义不可以嵌套,函数的调用可以嵌套 C. 函数的定义和函数的调用均可以嵌套 D. 函数的定义和函数的调用均不可以嵌套 40. 若用数组名作为函数调用的实参,传递给形参的是( A )。 A. 数组的首地址 B. 数组中第一个元素的值 C. 数组全部元素的值 D. 数组元素的个数 41. 以下错误的描述是( D )。 A. 被调用函数中可以不用return语句 B. 被调用函数中可以用多个return语句 C. 被调用函数中,如果有返回值,就一定要有return语句 D. 被调用函数中,一个return语句可返回多个值给调用函数 42. 在面向对象程序设计的概念中,对类(class)的描述,错误的是(D)。(A)类(class)是一组具有相同数据结构和相同操作的对象的集合 (B)类(class)用来定义对象可执行的操作 (C)类(class)是创建对象实例的模板,对象是类的一个实例 (D)当应用程序通过类(class)创建一个对象时,该对象就是一个窗口 43. 在默认的情况下,省略的类访问修饰符是(A) (A)private (B)public (C)protected (D)internal 44. 在下面的类声明中,属于私有字段的是(D) class Person { public string name; public string sex; private int age; double weight; } (A)name sex (B)age (C)weight (D)age weight 45. 类的属性中,能够修改字段值的代码块是(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; protected string owner; public string price; private string color; } (A)type No (B)heavy owner (C)type owner price (D)type price 47.类的以下特性中,可以用于方便地重用已有的代码和数据的是( ). A.多态 B.封装 C.继承 D.抽象 答案:C 48. 在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成____?(C) A.sealed 方法 B.public 方法 C.virtual 方法 D.override 方法 60. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x 对象中数据成员a的格式为( D )。 A. x(a) B. x[a] C. x->a D. x.a 49. 假定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() 51.Label控件的边框样式由(B)属性决定。 (A)FlatStyle (B)BorderStyle (C)BackColor (D)AutoSize 52 (A)List (B)ListIndex (C)ListCount (D)ItemData 53.使用(D)方法,可以把一个字符串数组的内容全部添加到ListBox控件中。 (A)Add() (B)Remove() (C)Clear() (D)AddRange() 54.访问组合框的(A)属性,可以获得用户在组合框中输入或选择的数据。 (A)Text (B)ItemData (C)SelectedIndex(D)SelectedValue 二、填空题 1.C#语言是一种B面向对象的、全新的程序设计语言,是微软.NET公共语言运行环境中内置的核心程序设计语言。 2..在定义C#语言的标识符构成时,G需要区分字母符的大小写形式。 备选项: 3.. C++源程序文件的默认扩展名为(cpp )。 4. 由C++源程序文件编译而成的目标文件的默认扩展名为( obj )。 5.. C++程序从上机到得到结果的几个操作步骤依次是(_编辑、_编译、_连接__、运行 )。 6. C++语言是在___C______语言的基础上发展起来的。 7. 行尾使用注释的开始标记符为___//_______。 8. 使控件是否可以对用户交互作出响应的属性是 _____ Enabled _____ 。 9. 控制控件是否显示的属性是 _______ Visible ___ 。 10 若要在文本框中输入密码,常指定 ______ 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型变量,请写出描述“-10<=x<=10”的C#语言表达式_-10<=x && x<=10__。 19.若k为int整型变量且赋值15.请写出k++后表达式的值A)__15______和变量值 B)___16___. 20."10 21. C#语言中的关系运算符按优先级分别是____< <= > >=___,__!= ==_ . 22.将下列数学式改写成C#语言的关系表达式或逻辑表达式A) _a==b||a A a=b 或a B |x|>4 23.C#语言中,数组属于引用数据类型,即数组内容所占用的存储单元是一组连续的内存区域C,数组变量的值是这组存储单元的起始地址。 24.无论是一维数组、多维数组、还是不规则数组,在C#语言中对数组的定义都分为两个步骤:定义数组变量;H数组变量初始化。 25.数组在定义时可以进行初始化,即在定义数组时为其指定初始值。C#语言中规定,初始化值序列中的数据个数F必须与数组的长度完全一致。 26.数组元素在程序中使用下标变量的形式表示。作为变量个体而言,下标变量与它同类型的普通变量(简单变量)是等价的,即数组的下标变量和普通变量的A用法相同。27.面向对象的程序设计允许用I实体或对象的思想方法来分析和设计应用程序,从而使软件开发过程更接近人类的思维过程。 28. 当应用程序通过类创建一个对象时,用户只要使用对象的B属性(property)和方法进行相应的操作,而不必关心其内部是如何实现的,这样就有助于实现程序结构的模块化和代码重用。 29. 如果访问修饰符使用A public ,则将类的访问类型指定为公共的,被声明的类可以在其它的项目中使用。 30. 类的属性通常属性包括 D get代码块和set代码块访问或修改字段的值。 31. 类的成员包括J数据成员和方法成员,使用属性可以实现对数据成员的良好封装。 32、面向对象的语言具有___封装性、_____继承_____性、____多态______性。33.在C#中,在实例化类对象时,系统自动调用该类的__构造函数____进行初始化。8.在C#中,当一个对象离开它的作用域或不再被使用时,系统将会自动调用类的___析构函数___。 34、在C#中,类的静态成员属于___类______所有,非静态成员属于类的实例所有。 35一般将类的构造方法声明为__public或公有_____ 访问权限。如果声明为private,就不能创建该类的对象。 36.如果声明属性时没有明确指定其可访问性,则会拥有默认值private。 在继承的情形中,对象同时是派生类和该派生类的所有基类的实体。 37. .多态是指两个或多个属性不同类的对象,对同一个消息做出不同响应的能力。 38..一个类可同时扩展单个基类,和实现一个或多个接口。 39.在使用继承时,原始的类被称作基类,新类被称作派生类。 40..C#定义了五种访问修饰关键字:public、private、protected、internal、protected internal。 三.简答题: 1. 简述private、protected、public修饰符的访问权限。 private : 私有成员, 在类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 2. C#中的接口和类有什么异同。 抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。 但接口是一个行为的规范,里面的所有东西都是抽象的! 一个类只可以继承一个基类也就是父类,但可以实现多个接口。 3. 面向对象的思想主要包括什么? 封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。 继承:子类拥有父类的所有数据和操作。 多态:一个程序中同名的不同方法共存的情况。 4.什么是对象? 所谓对象,是一种将状态和行为合成到一起的软件构造,用来描述真是世界的一个对象。 5.什么是多态? 多态是指两个或多个属于不同类的对象,对同一个消息(方法调用)做出不同响应的能力。 6. override与重载的区别 override 与重载的区别。重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类中函数的重写。为了适应需要。 7如何区别重载方法? 不同的参数类型,不同的参数个数,不同的参数顺序 8.什么是抽象类? 答案:抽象类是含有一个或多个抽象方法的类,抽象类不能实例化。 9.一个C#控制台应用程序主要由哪几个部分构成? 答案: (1)导入其他系统预定义元素部分; (2)命名空间; (3)类; (4)方法(主方法、事件响应处理过程) 10.C#程序中可以使用哪些书写注释的方法?它们分别适合用于什么场合? 答案:C#中的注释方法有三种: (1)单行注释在一个语句行上,用双斜杠“//”作为引导符,其后的任何内容均为注释信息,编译时被忽略,通常用于注释字符串较短的场合。 (2)多行注释从“/*”开始,到“*/”结束,多行注释通常用于需要书写较大量注释的情况 (3)XML注释在一个代码行上,用“///”开始,其后的任何内容均为注释信息,编译时被提取出来,形成一个特殊格式的文本文件(XML),用于创建文档说明书。 四. 判断题 1、c#面向对象的程序语言有继承性和多态性还有封装性答案对 2、接口不能通过方法来实现答案对 3、c#面向对象的程序语言特点:代码好维护,安全,隐藏信息答案对 4、通过提供对抽象类申明的所有抽象方法的非抽象实现,就能从抽象类派生出新类答案对 5、继承是一种强大的机制,他通过指出新旧类之间的不同之处,在旧类的基础上定义一个新类 答案对 6、C#支持多重继承。(no) 7、一切类的基类是object类,并且可以直接继承它。(yes) 8、抽象类里的方法一定不能含有实现。(no) 9、C#中一个类可以实现多个接口。(yes) 10、接口中可以定义方法,还可以定义属性。(yes) 11、静态方法访问类的attribute时,可以访问类的所有属性。(no) 12、静态方法不能被派生类覆载。(yes) 13、静态方法不能被声明为抽象方法。(yes) 14、在C#中,类的构造函数和析构函数都不能被继承。(√) 15、在C#中,定义一个类时,声明了一个构造函数,则编译器不会再提供默认的构造函数。(√) 16、在C#中,在类的属性声明中,只有get访问器表明属性只能读出而不能写入。(√) 17、C#不支持运算符重载。(×) 18、C#不支持私有继承和保护继承。(√) 19、在C#中,定义一个类时,用户不可以声明一个析构函数,因为析构函数是由编译器自动生成的。(×) 20、C#中抽象方法是隐式的虚方法,实现抽象方法用关键字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 = 5; int y = x++; Console.WriteLine(y); y = ++x; Console.WriteLine(y); 4如果 x=35, y=80,下面代码的输出结果是(报警) if (x < -10 || x > 30) { if (y >= 100) { Console.WriteLine("危险!"); } else { Console.WriteLine("报警!"); } } else { Console.WriteLine("安全"); } https://www.360docs.net/doc/d216409997.html,ing System; class Test { static int[] a = { 1, 2, 3, 4, 5, 6, 7, 8 }; public static void Main() { int s0, s1, s2; s0 = s1 = s2 = 0; for (int i = 0; i < 8; i++) { switch (a[i] % 3) { case 0: s0 += Test.a[i]; break; case 1: s1 += Test.a[i]; break; case 2: s2 += Test.a[i]; break; } } Console.WriteLine(s0 + " " + s1 + " " + s2); } } 答案:9 12 15 https://www.360docs.net/doc/d216409997.html,ing System; class Test { static void LE(ref int a, ref int b) { int x = a; a = b; b = x; Console.writeLine (a + “ “ +b); } public static void Main () { int x=10, y=25; LE(ref x, ref y); Console.writeLine (x + “ “ +y); } } 答案:25 10 25 10 7. 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 int[4]; for( i=0;i<10;i++) { j=0; while(a[i]>=b[j]) j++; c[j]=c[j]+1; } for(i=0;i<4;i++) Console.Write("{0},",c[i]); Console.WriteLine(); ; Console.ReadLine(); } 答案:2,1,5,2 https://www.360docs.net/doc/d216409997.html,ing 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; } class MyClass : BaseClass { public new int i; } https://www.360docs.net/doc/d216409997.html,ing System; namespace P7_3 { public class VirtualInheritSample { public static void Main() { DerivedClass c = new DerivedClass (); c.Call(); } } public class BaseClass { public void A() { Console .WriteLine("Base A"); } public virtual void B() { Console .WriteLine("Base B" ); } } public class DerivedClass : BaseClass { 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(); } } } https://www.360docs.net/doc/d216409997.html,ing System; class MyTest { public void swap(ref int x, ref int y) { int temp = x; x = y; y = temp; } } class test { static void Main() { int a = 6, b = 8; MyTest app = new MyTest(); app.swap(ref a, ref b); Console.WriteLine("a={0} b={1}", a, b); } } 六.程序填空: 1.若打印如下图案,画线处应填入()。 * * * * * * * * * * * * * * * for (int i = 1; i <=__ 5_; i++) { for (int j =__ i __; j <= 5; ___ j++__) { Console.Write("_*_"); } 2.以下程序为显示输出数组a中大于等于平均值的所有元素值。 static void f2(ref double[] a, int n) { int i; double sum=__0__;