- 84.50 KB
- 2022-07-29 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
如有侵权,请联系网站删除,仅供学习与交流一、二、三、四、五、六、C#复习资料七、【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流一、选择题1.CLR是一种()A.程序设计语言B.运行环境C.开发环境D.API编程接口2.C#语言源代码文件的后缀名为()A..c#B.ccC..cspD..cs3.构建桌面应用程序需要.NET提供的类库是()A.ADO.NETB.WindowsFormC.XMLD.ASP.NET4.与C++等语言相比,C#的简单性主要体现在()A.没有鼓励的全局函数B.没有指针C.不能使用未初始化的变量D.解决了“DLL地狱”5.C#中导入某一命名空间的关键字是()A.usingB.useC.importD.include6.C#中程序的入口方法名是()A.MainB.mainC.BeginD.using二、简答题1.C#语言的主要优势有哪些?2.如何看待C#、CLR和.NET之间的关系?3.VS2010平台如何有效地实现各类应用程序的管理?4.最常见的C#项目有哪几类?简述创建他们的基本操作步骤?第二章C#语言基础一、选择题1.C#中的值类型包括三种,它们是()A.整型、浮点型、基本类型B.数值类型、字符类型、字符串类型C.简单类型、枚举类型、结构类型D.数值类型、字符类型、枚举类型、2.C#的引用类型包括类、接口、数组、委托、object和string。其中object()根类【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流A.只是引用类型的B.只是值类型的C.只是string类型的D.是所有值类型和引用类型的3.浮点常量有三种格式,下面()组的浮点常量都属于double类型。A.0.618034,0.618034D,6.18034E-1B.0.618034,0.618034F,0.0618034E1C.0.618034,0.618034f,0.618034MD.0.618034F,0.618034D,0.618034M4.下面字符常量表示有错误的一组是()A.’\\’,’\u0027’,’\x0027’B.‘\n’,’\t’,’\037’C.’a’,’\u0061’,(char)97D.’\x0030’,’\0’,‘0’5.下列标识符命名正确的是()A._int,Int,@intB.using,_using,@usingC.NO1,NO_1,NO.1D.A3,_A3,@A36.当表达式中混合了几种不同的数据类型时,C#会基于运算的顺序将他们自动转换成同一类型。但下面()类型和decimal类型混合在一个表达式中,不能自动提升为decimal.A.floatB.intC.uintD.byte7.设有说明语句intx=8;则下列表达式中,值为2的是()A.X+=x-=x;B.x%=x-2;C.x>8?x=0:x++;D.x/x=x+x;8.C#数组主要有三种形式,它们是()A.一维数组、二维数组、三维数组B.整型数组、浮点型数组、字符型数组C.一维数组、多维数组、不规则数组D.一维数组、二维数组、多维数组9.设有说明语句double[,,]tab=newdouble[2,3,4];那么下面叙述正确的是()A.tab是一个三维数组,它的元素一共有24个B.tab是一个有三个元素的一维数组,它的元素初始值分别是2,3,4C.tab是一个维数不确定的数组,使用时可以任意调整D.tab是一个不规则数组,数组元素的个数可以变化10.C#的构造函数分为实例构造函数和静态构造函数,实例构造函数可以对()进行初始化,静态构造函数只能对()进行初始化。A.静态成员B.非静态成员C.静态成员或非静态成员D.静态成员和非静态成员11.C#实现了完全意义上的面向对象,所以它没有(),任何数据域和方法都必须封装在类体中。【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流A.全局变量B.全局常数C.全局方法D.全局变量、全局常量和全局方法12.方法中的值参数是()的参数。A.按值传递B.按引用传递C.按地址传递D.不传递任何值13.下面对方法中的ref和out参数说明错误的是()A.ref和out参数传递方法相同,都是把实在参数的内存地址传递给方法,实参与形参指向同一个内存存储区域,但ref要求实参必须在调用之前明确赋过值B.ref是将实参传入形参,out只能用于从方法中传出值,而不能从方法调用处接收实参数据C.ref和out参数传递的是实参的地址,所以要求实参和形参的数据类型必须一致D.ref和out参数要求实参和形参的数据类型或者一致,或者实参能被隐式地转化为形参的类型14.下列叙述中,正确的是()A.接口中科院有虚方法B.一个类科院实现多个接口C.接口能被实例化D.接口中科院包含已实现的方法二、简答题1.判断下列标识符的合法性。X.254footsexam-1usingmainWho_an_ILarge&Small_Yearsval(7)2xy2.下列常量是否合法?弱不合法,指出原因;若合法,指出它的数据类型。3276735u1.25e3.43L0.0086e-32‘\87’true“a”‘a’‘\96\45’.55UL3.指出下列哪些表示字符?哪些表示字符串?哪些既不表示字符也不表示字符串?‘0x66’China“中国”“8.42”‘\0x33’56.34“\n\tox34”‘\r’‘\\’‘8.34’“\0x33”‘\0’“ComputerSystem!\n”“\\\\doc\\share\\my1.doc”@”\\doc\share\my1.doc”@”Joesaid””Hello””tome”“Joesaid\”Hello\”tome”4.将下列代数式写成C#的表达式。(1)ax2+bx+c(2)(x+y)3(3)(a+b)/(a-b)5.计算下列表达式的值。【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流(1)x+y%4*(int)(x+z)%3/2其中,x=3.5,y=13,z=2.5(2)(int)x%(int)y+(float)(z*w)其中,x=2.5,y=3.5,z=3,w=46.写出下列表达式运算后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.数组在创建时可以根据需要进行初始化,需要注意的是,初始化时,不论数组的维数是多少,都必须显式地初始化数组的()元素。四、程序分析1.程序运行结果:______________classExe1StaticvoidMain(string[]args)intx,y,z;bools;x=y=z=0;s=x++!=0||++y!=0&&++y!=0;Console.WriteLine(“x={0},y={1},z={2},s={3}”,x,y,z,s);Console.Read();2.程序运行结果:_________________classExe2StaticvoidMain(string[]args)【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流inta,b;a=b=1;b+=a/b++;Console.Write(“a={0},b={1},”,a,b);b+=--a+(++b);Console.WriteLine(“a={0},b={1}”,a,b);Console.Read();1.程序运行结果:________________classExe3StaticvoidMain(string[]args)intHb,Lb,x;x=ox1af034;Hb=(x>>16)&0xFFFF;Lb=x&0x00ff;Console.Write(“Hbis{0}\t”,Hb);Console.WriteLine(“Lbis{0}”,Lb);Console.Read();2.程序运行结果:_________classExe4StaticvoidMain(string[]args)inta=2,b=7,c=5;switch(a>0)casetrue:switch(b<10)casetrue:Console.Write(“^”);break;【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流casefalse:Console.Write(“!”);break;break;casefalse:switch(c==5)casefalse:Console.Write(“*”);break;casetrue:Console.Write(“#”);break;break;Console.WriteLine();Console.Read();1.程序运行结果:___________classExe5StaticvoidMain(string[]args)int[]x;x=newint[10];int[]y={1,2,3,4,5,6,7,8,9,10};constintSIZE=10;int[]z;z=newint[SIZE];for(inti=0;i1时,Hermite多项式定义为:1n=0Hn(x)=2xn=12xHn-1-2(n-1)Hn-2(x)n>1当输入浮点数x和整数n后,求出Hermite多项式前n项的值。8.找出数组a中最大值的下标,输出下标及最大值。9.判断s所指的字符串是否是“回文”(即顺读和逆读是相同的字符)。10.输入一组非0整数(以0作为结束标志)到一位数组中,求出这一组数的平均值,并统【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流计出正数和负数的个数。11.设计一个程序,求一个4*4矩阵两对角线元素之和。12.输入一个字符串,串内有数字和非数字字符,例如,“abc2345345fdf678jdhfg945”,将其中连续的数字作为一个整数,依次存放到另一个整型数组b中。如将2345存放到b[0]。345存放到b[1],678放入b[2],……统计出字符串中的整数个数,并输出这些整数。第三章C#面向对象编程一、选择题1.C#语言的核心是面向对象编程(OOP),所有OOP语言都应至少具有三个特性:()A.封装、继承和多态B.类、对象和方法C.封装、继承和派生D.封装、继承和接口2.以下有关属性的叙述正确的是:()A.要求与字段域一一对应B.只包含get访问器的属性是只写属性C.不能把它当变量使用D.在静态属性访问器中可访问静态数据3.假设classMclass类的一个方法的签名为:publicvoidMax(outintmax,paramsint[]a),m1是Mclass类的一个对象,maxval是一个int型的值类型变量,arrayA是一个int型的数组对象,则下列调用该方法有错的是()A.m1.Max(outmaxval)B.m1.Max(outmaxval,4,5,2)C.m1.Max(outmaxval,refarrayA)D.m1.Max(outmaxval,3,3.5)4.枚举类型是一组命名的常量集合,所有整型都可以作为枚举类型的基本类型,如果类型省略,则约定为()A.uintB.sbyteC.intD.ulong二、简答题1.举一个现实世界中继承的例子,用类的层次图表示出来。2.什么是抽象类和密封类?它们有什么不同?3.分别在什么情况下使用隐式数值转换和显式数值转换?三、填空题【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流1.析构函数不能由程序显式地调用,而是由系统在_________时自动调用。如果这个对象是一个派生类对象,那么在调用析构函数时,除了执行派生类的析构函数,也会执行基类的析构函数,其执行顺序与构造函数__________.2.C#实现了完全意义上的面向对象,所以它没有____,任何数据域、方法都必须封装在类中。3.在类中,如果一个数据成员被声明为static的,则说明这个类的所有实例都共享这个static数据成员。在类体外,static成员不能通过_______来访问,它必须通过________来访问。四、程序分析1.下面的程序,输入不同参数,如:5、hello、0、1212121212121212等,观察并分析运行结果。classTeststaticvoidMain(string[]args)while(true)Strings=Console.ReadLine();if(s==”exit”)break;tryinti=10/int32.Parse(s);Console.WriteLine(“结果是”+i);catch(IndexOutOfRangeExceptione)Console.WriteLine(e.Message);catch(FormatExceptione)Console.WriteLine(e.Message);catch(DivideByZeroExceptione)Console.WriteLine(e.Message);catch(OverflowExceptione)Console.WriteLine(e.Message);Console.Read();【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流1.指出下面代码中错误的地方,并进行修改。usingSystem;namespacePavelTsekovinterfaceI1voidMyFunction1();interfaceI2voidMyFunction2();classTest:I1,I2publicvoidI1.MyFunction()Console.WreitLine("NowIcansaythishereisI1implemented!");publicvoidI2.MyFunction()Console.WreitLine("NowIcansaythishereisI2implemented!");classAppClassstaticvoidMain(string[]args)Testt=newTest();t.MyFunction1();t.MyFunction2();Console.Read();3.分析下面的代码,指出Digit和byte直接的转换方式,并说明原因。usingSystem;namespaceDigitpublicclassDigitbytevalue;publicDigit(bytevalue)if(value<0||value>9)【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流thrownewArgumentException();this.value=value;publicstaticimplicitoperatorbyte(Digitd)returnd.value;classProgramstaticvoidMain(string[]args)Digitdig=newDight(7);bytenum=dig;Console.WriteLine("num={0}",num);Console.ReadLine();五、编程题1.定义描述复数的类,并实现复数的输入和输出。设计三个方法分别完成复数的加、减和乘法运算。2.定义全班学生成绩类,包括姓名、学号、C++成绩、英语成绩、数学成绩和平均成绩。设计下列4个方法。(1)全班成绩的输入。(2)求出每一个同学的平均成绩。(3)按平均成绩的升序排序。(4)输出全班成绩。3.定义一个描述学生基本情况的类,数据成员包括姓名、学号以及C++和数学成绩,成员函数包括输出数据、设置姓名和学号、设置三门课的成绩,求出总成绩和平均成绩。4.设有一个描述坐标点的CPoint类,其私有变量x和y代表一个点的x、y坐标值。编写程序实现以下功能:利用构造函数传递参数,并设其默认参数值为60和75,利用成员函数display()输出这一默认值;利用公有成员函数setpoint()将坐标值修改为(80.150),并利用成员函数输出修改后的坐标值。【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流5.定义一个人员类CPerson,包括数据成员:姓名、编号、性别和用于输入/输出的成员函数。在此基础上派生出学生类CStudent(增加成绩)和教师类(增加教龄),并实现对学生和教师信息的输入/输出。6.把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类CLine,在派生出一个矩形类CRect。要求成员函数能求出两点间的距离、矩形的周长和面积等。设计一个测试程序,并构造完整的程序。简答题3.属性是类的数据成员吗?属性的作用是什么?get和set关键字的作用是什么/4.什么是方法?C#允许在类的外部声明方法吗?5.简述值类型与引用类型的区别。6.在方法调用中,参数按值传递与按引用传递的区别是什么?基本数据类型作为参数默认按什么方式传递,类对象作为参数默认按什么方式传递?类对象可以按值方式传递吗?基本数据类型参数按引用传递时,应该怎么做?关键字ref和out的区别是什么?7.什么叫方法的重载?两个方法是重载关系时,应满足什么条件?8.简述构造函数的作用?实验步骤1.设计一个简单的Windows应用程序,在文本框中输入两个点的坐标值,单击”确定”时显示两点之间的距离,如国所示.要求定义一个Point类,包括:(1)两个私有字段表示两坐标值(2)一个构造函数通过传入的参数对坐标值初始化(3)两个只读属性对坐标值的读取一个方法包含一个Point类对象作为形参该对象和自己的距离2.自定义一个时间类.该类包含小时,分,秒字段与属性,具有将秒增加1秒的方法,如图所示.要求定义一个Time类,包括:(1)三个私有字段表示时,分,秒(2)两个构造函数,一个通过传入的对时间初始化,另一个获取系统当前的时间(3)三个只读入属性实现对时,分,秒的读取【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流(1)一个于对秒增加1秒(注意60进位的问题).图133.设计一个Windows应用程序,在该程序中定义一个学生类和班级类,以处理每个学生的学号、姓名,语文、数学和英语三门课程的期末考试成绩,要求:(1)能查询每个学生的总成绩。(2)能显示全班前三名的名单。(3)能显示单科成绩最高分和不及格的学生名单。(4)能统计全班学生的平均成绩。(5)能显示各科成绩在不同分数段的学生人数百分比。设计提示:(1)定义一个Student学生类,包含字段(学号、姓名、语文成绩、数学成绩、英语成绩)和属性(总成绩)等。(2)定义一个StudentList班级类,包含一个Student类型的数组(用来保存全班学生的信息)以及若干个实现上述要求的方法等。(3)设计用户操作界面,首先让用户能输入一个学生的信息,当单击“添加”按钮时把这些信息添加到班级对象的学生数组中。当单击“完成”按钮时调用班级类的方法来显示索要来统计的统计结果。当用户在查询框中输入学生的名字后,并单击“查询”按钮时显示该学生的总成绩。1.选择题(1)面向对象的特点主要概括为()A.可分解性、可组合性和可分类性B.继承性、封装性和多态性C.封装性、易维护性、可扩展性和可重用性D.抽象性、继承性、封装性(2)要使某个类能被同一个命名空间中的其他类访问,但不能被这个命名空间以外的类访问,该类可以()A.不适用任何关键字B.使用privat关键字C.使用const关键字D.使用protected关键字(3)类的字段和方法的默认访问修饰符是()【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流A.publicB.privateC.protectedD.internal(4)下列关于构造函数的描述中,()选项是正确的。A.构造函数名必须与类名相同B.构造函数不可以重载C.构造函数不能带参数D.构造函数可以声明返回类型(5)C#中TestClass为一自定义类,其中有以下属性定义:publicvoidProperty{……}使用以下语句创建了该类的对象,并让变量obj引用该对象:TestClassobj=newTestClass();那么,可通过()方式访问类TestClass的Property属性。A.MyClass.PropertyB.obj::PropertyC.obj.PropertyD.obj.Property()2.思考题(1)如何理解面向对象程序设计中的类和对象?二者是什么关系?(2)面向对象的主要特点有哪些?(3)类的声明格式中包含哪些部分?各有什么意思?(4)什么是实例方法?什么是静态方法?(5)类可以使用哪些修饰符?各代表什么含义?(6)简述new、this、static、ref、out、params、get、set、value这些关键字的作用。(7)简述构造函数和析构函数的作用。3.上机练习题(1)构造一个类,可以分别对任意多个整数、小数或字符串进行排序。(2)自定义一个时间类,该类包含时、分、秒字段与属性,具有将时间增加1秒、1分和1小时的方法,具有分别显示时、分、秒和同事显示时分秒的方法。(3)创建一个Windows应用程序,输入两个正整数,单击“计算”按钮,求出这两个数的最大公约数。要求:将求最大公约数的算法声明为一个静态方法,由“计算”按钮调用。【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流(4)构造一个图书类book,能记录和访问书店图书信息,包括标题、作者、价格、库存等,同时能选择不同的构造函数来初始化类的实例。1.选择题(1)下面有关虚方法的描述中,正确的是()A.虚方法能在程序运行时,动态确定要调用的方法,因而比非虚方法更灵活B.在定义虚方法时,基类和派生类的方法定义语句中都要带上virtual修饰符C.重写基类的虚方法时,为消除隐藏基类成员的警告,需要带上new修饰符D.在重写虚方法时,需要同时带上override和virtual修饰符(2)下列方法中,()是抽象方法。A.staticvoidfunc(){}B.virtualvoidfunc(){}C.abstractvoidfunc(){}D.overridevoidfunc(){}(3)下列关于接口的说法中,()是错误的。A.一个类可以有多个基类和多个基接口B.抽象类和接口都不能被实例化C.抽象类自身可以定义成员而接口不可以D.类不可以多重继承而接口可以(4)已知类Base,Derived的定义如下:ClassBasePublicvoidHello()System.Console.Write(“HelloinBase!”);ClassDerived:BasePublicnewvoidHello()System.Console.Write(“HelloinDerived!”);则语句段”Derivedx=newDerived();x.Hello();”在控制台中的输出结果为____A.HelloinBase!B.HelloinBase!HelloinDerived!C.HelloinDerived!D.HelloinDerived!HelloinBase!【精品文档】第18页\n如有侵权,请联系网站删除,仅供学习与交流思考题(1)什么是类的继承?怎样定义派生类?(2)简述创建派生类时,构造数的调用.(3)怎样定义基类虚方法,并在派生类中重写基类虚方法?(4)抽象方法与虚方法有什么异同?(5)什么是抽象类?它有什么特点?它和接口有何异同?(6)简述通过委托来调用对象方法的基本过程上机练习题(1)定义磁盘类Disk及派生类HardDisk(硬盘),Flash(闪盘)和CKROM(光盘)在其中定义记录磁盘容量的字段,并通过虚拟方法和重写方法来模拟对磁盘内容的写入和删除.(2)设计并编程实现规则平面几何图形(所谓规则是指各边相等,各个内角也相等的等边图形)的继承层次,要求定义一个抽象基类Shape,同它派生出4个派生类:等边三解开,下方形,等边五边形,等边六边形,并通过抽象方法的实现来计算各种图形的面积(3)以委托对象作为方法的参数,对学生类对象分别按照姓名,年龄和年级来比较两个学生对象,实现程序以不同的排序方法来输出学生信息.(4)在第7章习题的设计题(4)的book类中,添加每卖出一份图书时,就触发一个事件.在订购者中处理该事件,输出销售数据信息.【精品文档】第18页