《C#复习资料.pdf》由会员分享,可在线阅读,更多相关《C#复习资料.pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、一、选择题 1.CLR 是一种()A 程序设计语言 B.运行环境 C.开发环境 D.API 编程接口 2.C#语言源代码文件的后缀名为()A.c#B.cc C.csp D.cs 3.构建桌面应用程序需要.NET 提供的类库是()4.Form 与 C+等语言相比,C#的简单性主要体现在()A 没有鼓励的全局函数 B.没有指针 C.不能使用未初始化的变量 D.解决了“DLL 地狱”5.C#中导入某一命名空间的关键字是()A using 6.C#中程序的入口方法名是()A Main 二、简答题 1.C#语言的主要优势有哪些 2.如何看待 C#、CLR 和.NET 之间的关系 3.VS2010 平台如
2、何有效地实现各类应用程序的管理 4.最常见的 C#项目有哪几类简述创建他们的基本操作步骤 第二章 C#语言基础 一、选择题#中的值类型包括三种,它们是()A整型、浮点型、基本类型 B.数值类型、字符类型、字符串类型 C.简单类型、枚举类型、结构类型 D.数值类型、字符类型、枚举类型、#的引用类型包括类、接口、数组、委托、object 和 string。其中 object()根类 A.只是引用类型的 B.只是值类型的 C.只是 string 类型的 D.是所有值类型和引用类型的 3.浮点常量有三种格式,下面()组的浮点常量都属于 double 类型。A.,,4.下面字符常量表示有错误的一组是()
3、A.,u0027,x0027 B.n,t,037 C.a,u0061,(char)97 D.x0030,0,0 5.下列标识符命名正确的是()A._int,Int,int ,_using,using ,NO_1,D.A3,_A3,A3 6.当表达式中混合了几种不同的数据类型时,C#会基于运算的顺序将他们自动转换成同一类型。但下面()类型和 decimal 类型混合在一个表达式中,不能自动提升为 decimal.A.float B.int D.byte 7.设有说明语句 int x=8;则下列表达式中,值为 2 的是()+=x-=x;%=x-2;8x=0:x+;x=x+x;#数组主要有三种形式,
4、它们是()A.一维数组、二维数组、三维数组 B.整型数组、浮点型数组、字符型数组 C.一维数组、多维数组、不规则数组 D.一维数组、二维数组、多维数组 9.设有说明语句 double,tab=new double 2,3,4;那么下面叙述正确的是()A.tab 是一个三维数组,它的元素一共有 24 个 B.tab 是一个有三个元素的一维数组,它的元素初始值分别是 2,3,4 C.tab 是一个维数不确定的数组,使用时可以任意调整 D.tab 是一个不规则数组,数组元素的个数可以变化#的构造函数分为实例构造函数和静态构造函数,实例构造函数可以对()进行初始化,静态构造函数只能对()进行初始化。A
5、.静态成员 B.非静态成员 C.静态成员或非静态成员 D.静态成员和非静态成员#实现了完全意义上的面向对象,所以它没有(),任何数据域和方法都必须封装在类体中。A.全局变量 B.全局常数 C.全局方法 D.全局变量、全局常量和全局方法 12.方法中的值参数是()的参数。A.按值传递 B.按引用传递 C.按地址传递 D.不传递任何值 13.下面对方法中的 ref 和 out 参数说明错误的是()和 out 参数传递方法相同,都是把实在参数的内存地址传递给方法,实参与形参指 向同一个内存存储区域,但 ref 要求实参必须在调用之前明确赋过值 是将实参传入形参,out只能用于从方法中传出值,而不能从
6、方法调用处接收实参数据 和 out 参数传递的是实参的地址,所以要求实参和形参的数据类型必须一致 Dref和out参数要求实参和形参的数据类型或者一致,或者实参能被隐式地转化为形参的类型 14.下列叙述中,正确的是()A.接口中科院有虚方法 B.一个类科院实现多个接口 C.接口能被实例化 D.接口中科院包含已实现的方法 二、简答题 1.判断下列标识符的合法性。4foots exam-1 using main Who_an_I Large&Small _Years val(7)2xy 2.下列常量是否合法弱不合法,指出原因;若合法,指出它的数据类型。32767 35u 3L 87 true “a
7、”a 9645 .5 5UL 3.指出下列哪些表示字符哪些表示字符串哪些既不表示字符也不表示字符串 0 x66 China “中国”“”0 x33 “ntox34”r “0 x33”0 “Computer System!n”“docshare”docshare”Joe said”Hello”to me”“Joe said”Hello”to me”4.将下列代数式写成 C#的表达式。(1)ax2+bx+c (2)(x+y)3 (3)(a+b)/(a-b)5.计算下列表达式的值。(1)x+y%4*(int)(x+z)%3/2 其中,x=,y=13,z=(2)(int)x%(int)y+(float
8、)(z*w)其中,x=,y=,z=3,w=4 6.写出下列表达式运算后 a 的值,设原来的 a 都是 10。(1)a+=a;(2)a%=(7%2);(3)a*=3+4;(4)a/=a+a;(5)a-=a;(6)a+=a-=a*=a;三、填空题 1.C#中可以把任何类型的值赋给 object 类型变量,当值类型赋给 object 类型变量时,系统要进行()操作;而将 object 类型变量赋给一个值类型变量,系统要进行()操作,并且必须加上()类型转换。2.C#特有的不规则数组是数组的数组,也就是说它的数组元素是(),并且它的内部每个数组的长度()。3.数组在创建时可以根据需要进行初始化,需要注
9、意的是,初始化时,不论数组的维数是多少,都必须显式地初始化数组的()元素。四、程序分析 1.程序运行结果:_ class Exe1 Static void Main(string args)int x,y,z;bool s;x=y=z=0;s=x+!=0|+y!=0&+y!=0;(“x=0,y=1,z=2,s=3”,x,y,z,s);();2.程序运行结果:_ class Exe2 Static void Main(string args)int a,b;a=b=1;b+=a/b+;(“a=0,b=1,”,a,b);b+=-a+(+b);(“a=0,b=1”,a,b);();3.程序运行结果:
10、_ class Exe3 Static void Main(string args)int Hb,Lb,x;x=ox1af034;Hb=(x16)&0 xFFFF;Lb=x&0 x00ff;(“Hb is 0t”,Hb);(“Lb is 0”,Lb);();4.程序运行结果:_ class Exe4 Static void Main(string args)int a=2,b=7,c=5;switch(a0)case true:switch(b10)case true:(“”);break;case false:(“!”);break;break;case false:switch(c=5)c
11、ase false:(“*”);break;case true:(“#”);break;break;();();5.程序运行结果:_ class Exe5 Static void Main(string args)int x;x=new int10;int y=1,2,3,4,5,6,7,8,9,10;const int SIZE=10;int z;z=new intSIZE;for(int i=0;i1 时,Hermite 多项式定义为:1 n=0 Hn(x)=2x n=1 2xHn-1-2(n-1)Hn-2(x)n1 当输入浮点数 x 和整数 n 后,求出 Hermite 多项式前 n 项
12、的值。8.找出数组 a 中最大值的下标,输出下标及最大值。9.判断 s 所指的字符串是否是“回文”(即顺读和逆读是相同的字符)。10.输入一组非 0 整数(以 0 作为结束标志)到一位数组中,求出这一组数的平均值,并统 计出正数和负数的个数。11.设计一个程序,求一个 4*4 矩阵两对角线元素之和。12.输入一个字符串,串内有数字和非数字字符,例如,“abc2345 345fdf678 jdhfg945”,将其中连续的数字作为一个整数,依次存放到另一个整型数组b中。如将2345存放到b0。345 存放到 b1,678 放入 b2,统计出字符串中的整数个数,并输出这些整数。第三章 C#面向对象编
13、程 一、选择题 1.C#语言的核心是面向对象编程(OOP),所有 OOP 语言都应至少具有三个特性:()A.封装、继承和多态 B.类、对象和方法 C.封装、继承和派生 D.封装、继承和接口 2.以下有关属性的叙述正确的是:()A.要求与字段域一一对应 B.只包含 get 访问器的属性是只写属性 C.不能把它当变量使用 D.在静态属性访问器中可访问静态数据 3.假设 class Mclass 类的一个方法的签名为:public void Max(out int max,params inta),m1 是Mclass 类的一个对象,maxval 是一个 int 型的值类型变量,arrayA 是一个
14、 int 型的数组对象,则下列调用该方法有错的是()A.(out maxval)B.(out maxval,4,5,2)C.(out maxval,ref arrayA)D.(out maxval,3,4.枚举类型是一组命名的常量集合,所有整型都可以作为枚举类型的基本类型,如果类型省 略,则约定为()A.uint 二、简答题 1.举一个现实世界中继承的例子,用类的层次图表示出来。2.什么是抽象类和密封类它们有什么不同 3.分别在什么情况下使用隐式数值转换和显式数值转换 三、填空题 1.析构函数不能由程序显式地调用,而是由系统在_时自动调用。如果这个对象是 一个派生类对象,那么在调用析构函数时,
15、除了执行派生类的析构函数,也会执行基类的 析构函数,其执行顺序与构造函数_.2.C#实现了完全意义上的面向对象,所以它没有_,任何数据域、方法都必须封装在类中。3.在类中,如果一个数据成员被声明为 static 的,则说明这个类的所有实例都共享这个 static 数据成员。在类体外,static 成员不能通过_来访问,它必须通过_来访问。四、程序分析 1.class Test static void Main(string args)while(true)String s=();if(s=”exit”)break;try int i=10/(s);(“结果是”+i);catch(IndexOu
16、tOfRangeException e);catch(FormatException e);catch(DivideByZeroException e);catch(OverflowException e);();2.指出下面代码中错误的地方,并进行修改。using System;namespace PavelTsekov interface I1 void MyFunction1();interface I2 void MyFunction2();class Test:I1,I2 public void()(Now I can say this here is I1 implemented!
17、);public void()(Now I can say this here is I2 implemented!);class AppClass static void Main(string args)Test t=new Test();();();();3.分析下面的代码,指出 Digit 和 byte 直接的转换方式,并说明原因。using System;namespace Digit public class Digit byte value;public Digit(byte value)if(value9)throw new ArgumentException();=value
18、;public static implicit operator byte(Digit d)return;class Program static void Main(string args)Digit dig=new Dight(7);byte num=dig;(num=0,num);();五、编程题 1.定义描述复数的类,并实现复数的输入和输出。设计三个方法分别完成复数的加、减和乘法运算。2.定义全班学生成绩类,包括姓名、学号、C+成绩、英语成绩、数学成绩和平均成绩。设计下列 4 个方法。(1)全班成绩的输入。(2)求出每一个同学的平均成绩。(3)按平均成绩的升序排序。(4)输出全班成绩。
19、3.定义一个描述学生基本情况的类,数据成员包括姓名、学号以及 C+和数学成绩,成员函数包括输出数据、设置姓名和学号、设置三门课的成绩,求出总成绩和平均成绩。4.设有一个描述坐标点的 CPoint 类,其私有变量 x 和 y 代表一个点的 x、y 坐标值。编写程序实现以下功能:利用构造函数传递参数,并设其默认参数值为 60 和 75,利用成员函数 display()输出这一默认值;利用公有成员函数 setpoint()将坐标值修改为,并利用成员函数输出修改后的坐标值。5.定义一个人员类 CPerson,包括数据成员:姓名、编号、性别和用于输入/输出的成员函数。在此基础上派生出学生类 CStude
20、nt(增加成绩)和教师类(增加教龄),并实现对学生和教师信息的输入/输出。6.把定义平面直角坐标系上的一个点的类 CPoint 作为基类,派生出描述一条直线的类CLine,在派生出一个矩形类 CRect。要求成员函数能求出两点间的距离、矩形的周长和面积等。设计一个测试程序,并构造完整的程序。简答题 3.属性是类的数据成员吗属性的作用是什么 get 和 set 关键字的作用是什么/4.什么是方法 C#允许在类的外部声明方法吗 5.简述值类型与引用类型的区别。6.在方法调用中,参数按值传递与按引用传递的区别是什么基本数据类型作为参数默认按什么方式传递,类对象作为参数默认按什么方式传递类对象可以按值
21、方式传递吗基本数据类型参数按引用传递时,应该怎么做关键字 ref 和 out 的区别是什么 7.什么叫方法的重载两个方法是重载关系时,应满足什么条件 8.简述构造函数的作用 实验步骤 1.设计一个简单的 Windows 应用程序,在文本框中输入两个点的坐标值,单击”确定”时显示两点之间的距离,如国所示.要求定义一个 Point 类,包括:(1)两个私有字段表示两坐标值(2)一个构造函数通过传入的参数对坐标值初始化(3)两个只读属性对坐标值的读取 一个方法包含一个 Point 类对象作为形参该对象和自己的距离 2.自定义一个时间类.该类包含小时,分,秒字段与属性,具有将秒增加 1 秒的方法,如图
22、所示.要求定义一个 Time 类,包括:(1)三个私有字段表示时,分,秒(2)两个构造函数,一个通过传入的对时间初始化,另一个获取系统当前的时间(3)三个只读入属性实现对时,分,秒的读取(4)一个于对秒增加 1 秒(注意 60 进位的问题).图 13 3.设计一个 Windows 应用程序,在该程序中定义一个学生类和班级类,以处理每个学生的学号、姓名,语文、数学和英语三门课程的期末考试成绩,要求:(1)能查询每个学生的总成绩。(2)能显示全班前三名的名单。(3)能显示单科成绩最高分和不及格的学生名单。(4)能统计全班学生的平均成绩。(5)能显示各科成绩在不同分数段的学生人数百分比。设计提示:(
23、1)定义一个 Student 学生类,包含字段(学号、姓名、语文成绩、数学成绩、英语成绩)和属性(总成绩)等。(2)定义一个 StudentList 班级类,包含一个 Student 类型的数组(用来保存全班学生的信息)以及若干个实现上述要求的方法等。(3)设计用户操作界面,首先让用户能输入一个学生的信息,当单击“添加”按钮时把这些信息添加到班级对象的学生数组中。当单击“完成”按钮时调用班级类的方法来显示索要来统计的统计结果。当用户在查询框中输入学生的名字后,并单击“查询”按钮时显示该学生的总成绩。1.选择题(1)面向对象的特点主要概括为()A.可分解性、可组合性和可分类性 B.继承性、封装性
24、和多态性 C.封装性、易维护性、可扩展性和可重用性 D.抽象性、继承性、封装性(2)要使某个类能被同一个命名空间中的其他类访问,但不能被这个命名空间以外的类访问,该类可以()A.不适用任何关键字 B.使用 privat 关键字 C.使用 const 关键字 D.使用 protected 关键字(3)类的字段和方法的默认访问修饰符是()(4)下列关于构造函数的描述中,()选项是正确的。A.构造函数名必须与类名相同 B.构造函数不可以重载 C.构造函数不能带参数 D.构造函数可以声明返回类型(5)C#中 TestClass 为一自定义类,其中有以下属性定义:public void Property
25、 使用以下语句创建了该类的对象,并让变量 obj 引用该对象:TestClass obj=new TestClass();那么,可通过()方式访问类 TestClass 的 Property 属性。2.思考题(1)如何理解面向对象程序设计中的类和对象二者是什么关系(2)面向对象的主要特点有哪些(3)类的声明格式中包含哪些部分各有什么意思(4)什么是实例方法什么是静态方法(5)类可以使用哪些修饰符各代表什么含义(6)简述 new、this、static、ref、out、params、get、set、value 这些关键字的作用。(7)简述构造函数和析构函数的作用。3.上机练习题(1)构造一个类,
26、可以分别对任意多个整数、小数或字符串进行排序。(2)自定义一个时间类,该类包含时、分、秒字段与属性,具有将时间增加 1 秒、1 分和 1小时的方法,具有分别显示时、分、秒和同事显示时分秒的方法。(3)创建一个 Windows 应用程序,输入两个正整数,单击“计算”按钮,求出这两个数的最大公约数。要求:将求最大公约数的算法声明为一个静态方法,由“计算”按钮调用。(4)构造一个图书类 book,能记录和访问书店图书信息,包括标题、作者、价格、库存等,同时能选择不同的构造函数来初始化类的实例。1.选择题(1)下面有关虚方法的描述中,正确的是()A.虚方法能在程序运行时,动态确定要调用的方法,因而比非
27、虚方法更灵活 B.在定义虚方法时,基类和派生类的方法定义语句中都要带上 virtual 修饰符 C.重写基类的虚方法时,为消除隐藏基类成员的警告,需要带上 new 修饰符 D.在重写虚方法时,需要同时带上 override 和 virtual 修饰符(2)下列方法中,()是抽象方法。A.static void func()void func()void func()void func()(3)下列关于接口的说法中,()是错误的。A.一个类可以有多个基类和多个基接口 B.抽象类和接口都不能被实例化 C.抽象类自身可以定义成员而接口不可以 D.类不可以多重继承而接口可以(4)已知类 Base,De
28、rived 的定义如下:Class Base Public void Hello()“Hello in Base!”);Class Derived:Base Public new void Hello()“Hello in Derived!”);则语句段”Derived x=new Derived();();”在控制台中的输出结果为_ A.Hello in Base!in Base!Hello in Derived!in Derived!in Derived!Hello in Base!思考题(1)什么是类的继承怎样定义派生类(2)简述创建派生类时,构造数的调用.(3)怎样定义基类虚方法,并在
29、派生类中重写基类虚方法(4)抽象方法与虚方法有什么异同(5)什么是抽象类它有什么特点它和接口有何异同(6)简述通过委托来调用对象方法的基本过程 上机练习题(1)定义磁盘类 Disk 及派生类 HardDisk(硬盘),Flash(闪盘)和 CKROM(光盘)在其中定义记录磁盘容量的字段,并通过虚拟方法和重写方法来模拟对磁盘内容的写入和删除.(2)设计并编程实现规则平面几何图形(所谓规则是指各边相等,各个内角也相等的等边图形)的继承层次,要求定义一个抽象基类 Shape,同它派生出 4 个派生类:等边三解开,下方形,等边五边形,等边六边形,并通过抽象方法的实现来计算各种图形的面积(3)以委托对象作为方法的参数,对学生类对象分别按照姓名,年龄和年级来比较两个学生对象,实现程序以不同的排序方法来输出学生信息.(4)在第 7 章习题的设计题(4)的 book 类中,添加每卖出一份图书时,就触发一个事件.在订购者中处理该事件,输出销售数据信息.