C#课本课后答案_第1页
C#课本课后答案_第2页
C#课本课后答案_第3页
C#课本课后答案_第4页
已阅读5页,还剩21页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C#课本课后答案第2章C#编程语言基础1. 下面不是合法的变量:A.myVariablesIsGoodB.99FlakeC._floorD.time2GetJiggyWidit解:不是合法的变量为:99Flake(不能以数字开头);2. 字符串supercalifragilisticexpialidocious是因为太长了而不能放在stirng变量中吗?为什么?答:此描术是错误的,C#规定组stirng的字符数组没有上限,因为它可以使用可变大小的内存。3. 编写一个控制台应用程序,要求用户输入4个int值,并显示它们的乘积。/定义整形数组,用于存放输入值;int inputNamber = n

2、ewint4;/开如输入值;Console.Write(请输入第一个数的值:);inputNamber0 = Convert.ToInt32(Console.ReadLine().Trim();Console.Write(请输入第二个数的值:);inputNamber1 = Convert.ToInt32(Console.ReadLine().Trim();Console.Write(请输入第三个数的值:);inputNamber2 = Convert.ToInt32(Console.ReadLine().Trim();Console.Write(请输入第四个数的值:);inputNamber

3、3 = Convert.ToInt32(Console.ReadLine().Trim();/输出结果;Console.WriteLine(0*1*2*3 = 4, inputNamber0,inputNamber1,inputNamber2,inputNamber3,(inputNamber0 * inputNamber1 * inputNamber2 * inputNamber3);Console.ReadLine();4. 如果有两个整数存储在变量var1和var2 中,该进行怎么样的布尔测试,看看其中的一个(但不是两个)是否大于10?解答:var110 var2 10;5. 编写一个应

4、用程序,其中包含练习4中的逻辑,让用户输入两个数字,并显示它们,但拒绝接受两个数字都大于10的情况,并要求用户重新输入。int number1 = 0;int number2 = 0; while (true) Console.WriteLine(请输入两个数字,有且只能有一个大于10);Console.WriteLine();Console.Write(请输入第一个数:);number1 = Convert.ToInt32(Console.ReadLine();Console.Write(请输入第二个数:);number2 = Convert.ToInt32(Console.ReadLine

5、();if (number1 10 number2 10)Console.WriteLine();Console.WriteLine(第一个为:0, number1);Console.WriteLine(第二个为:0, number2);break;elseConsole.WriteLine();Console.WriteLine(输入的数字无法满足条件,按任意键重新输入);Console.ReadKey();Console.ReadKey();6. 下载面的代码有什么错误:int i;for ( i = 1; I if ( ( i % 2 )=0) /错误应改为:if ( ( i % 2 )

6、 = 0)continue;Console.WriteLine( i );7. 下面的转换那些不是隐式转换?A. Int 转换为short; 不是B. Short 转换为int; 是C. Bool 转换为string; 不是D. Byte 转换为float; 是8. 下面的代码可以成功编译吗?如果不能,为什么?string blab = new string5;string5 = 5th string;解答:不能,string5数组名用法不正确且索引也超出最大数,赋值语句后的字符串需加双引号。9编写一个控制台应用程序,它接收用户输入的一个字符串,将其中的字符以与输入的相反顺序输出。string

7、 inputString = null;Console.Write(请输入一字符串:);inputString = Console.ReadLine().Trim();if (!string.IsNullOrEmpty(inputString)for (int i = inputString.Length-1; i =0; i-)Console.Write(0, inputStringi);Console.ReadKey();10编写一个控制台应用程序,它接收一个字符串,用yes替换字符串所有的no。string inputString = null;Console.Write(请输入一字符串

8、:);inputString = Console.ReadLine().Trim();if (!string.IsNullOrEmpty(inputString)Console.WriteLine(inputString.Replace(no, yes);Console.ReadKey();11. 编写一个控制台应用程序,给字符串中的每个单词加上双引号。string str3 = Console.ReadLine();string strarr = str3.Split( );string result = ;for (int i = 0; i if (strarri != )result +

9、= + strarri + + ;Console.Write(result);Console.Read();12. 下面两个函数都有错误,请指出这些错误。static bool Write()Console.WriteLine(“Text output from function.”);解答:函数无返回值;static void myFunction( stirng label , params int args , bool showLabel )if(showLabel)Console.WriteLine(label);foreach(int i in args)Console.Write

10、Line(“0”,i);解答:C#规定允许为函数指定一个(只能指定一个)特定的参数,这个参数必须是函数定义中的最后一个参数,称为参数数组。参数数组可以使用个数不定的参数调用函数,它可以使用params关键字来定义。13. 编写一个应用程序,该程序使用两个命令行参数,分别把值放在一个字符串和一个整型变量中,然后显示这些值:/* 编写一个应用程序,该程序使用两个命令行参数,* 分别把值放在一个字符串和一个整型变量中,* 然后显示这些值:*/using System;using System.Collections.Generic;using System.Text;namespace Exerci

11、se_Towclass Programstatic void Main(string args)if (args.Length != 2)Console.WriteLine(请分别输入一个字符串和一个整型变量命令行参数!);elsestring stringVar = args0;int intVar = Convert.ToInt32(args1);Console.WriteLine(来自命令行的参数:);Console.WriteLine(字符串为:0, stringVar);Console.WriteLine(整型变量:0, intVar);stringVar = null;Consol

12、e.ReadKey();14. 修改下面的结构,使这包含一个返回订单总价格的函数;struct orderpublic string itemName;public int unitCount;public double unitCost;解答:struct orderpublic string itemName;public int unitCount;public double unitCost;public double GetTotalPrices()return unitCount * unitCost;第3章C#面向对象程序设计1. “必须手动调用对像的析构函数,否则就会浪费资源”

13、,对吗?解答:错误,一般情况下,不需要提供析构方法的代码,而是由默认的析函数执行操作。2. 必须创建一个对象,才能调用其类的静态方法吗?解答:静态属性和静态字段可以访问独立于任何对象实例的数据,静态方法可以执行与对像类型相关,但与对像实例无关的命令。在使用静态成员时,甚至不需要实例化对像。3. 下面的代码有什么错误?public sealed class MyClass/ class members;public class myDerivedClass:MyClass/ Class members解答:包含sealed 关键字的类只能在当前项目中访问,不能派生,只能实例化;4. 如何定义不能

14、创建的类?解答:可以通过添加关键字“abstract”创建抽象类,根据C# 定义抽象类不能实例化。5. 为什么不能创建的类仍有用?如何利用它们的功能?解答:接口和抽象类都是不能创建的类,但可以声明它们的变量。如果这样做,就可以使用多态性把继承这两种类型的对象指定给它们的变量。接着通过这些变量来使用这些类型的成员,但不能直接访问派生对象的其他成员。6. 编写代码,定义一个基类MyClass,其中包含虚拟方法GetString()。这个方法应返回有储在受保护字段myString中的字符串,该字段可以通过只写公共属性ContainedString 来访问。public class MyClasspr

15、ivate string myString;public string ContainedStringgetreturn myString;public virtual string GetString()return myString;7. 从类MyCalss 中派生一个类MyDerivedClass 。重写GetString()方法。使用该方法的基类执行代码从基类中返回一个字符串,但在返回的字符串中添加文本“(output from derivedclass)”.public class MyDerivedClass : MyClasspublic override string GetS

16、tring()return base.GetString() + (output from derivedclass);8. 编写一个类MyCopyableClass,该类可以使用方法GetCopy返回它本身的一个副本。这个方法应使用派于System.Object的MemberwiseClone() 方法。给该类添加一简单的属性,并且编写客户代码,使用访类检查任务是否成功执行。public class MyCopyableClasspublic MyCopyableClass GetCopy()return (MyCopyableClass)MemberwiseClone();测试代码:MyC

17、opyableClass myCopyableClass = new MyCopyableClass();if (typeof(MyCopyableClass)=myCopyableClass.GetCopy().GetType()Console.WriteLine(测试成功);9. 创建一个集合类People ,它是下述Person类的集合,该集合中的项可以通过一个字符串索引符来访问,该字符串索引符是人的姓名,与/doc/e248e448c850ad02de8041e9.html 属性相同:public class Personprivate s

18、tring name;private int age;ublic string NameGetreturn name;Setname = value;public int AgeGetreturn age;age = value;10. 扩展上一题中的Person 类,重载、/定义字段private string name;private int age;/定义属性public string Nameget return name; set name = value; public int Ageget return age; set age = value; /定义运算符重载public s

19、tatic bool operator (Person p1, Person p2)return p1.Age p2.Age ? true : false;public static bool operator return p1.Age public static bool operator =(Person p1, Person p2)return p1.Age = p2.Age ? true : false;public static bool operator return p1.Age /定义Person类的集合Peoplepublic class People : Dictiona

20、ryBase,ICloneable /继承于DictionaryBase DictionaryBase实现了IDictionary接口public void Add(Person p)Dictionary.Add(/doc/e248e448c850ad02de8041e9.html, p);public void Remove(string nameID)Dictionary.Remove(nameID);public Person thisstring nameIDget return (Person)DictionarynameID;set D

21、ictionarynameID = value; 11.给People 类添加GetOldest()方法,使用上面定义的重载运算符,返回其Age属性值为最大的Person 对象数组(1个或多个对象,因为对于这个属性而言,多个项可以有相同的值)。/给People类添加GetOldest()方法,使用上面的重载运算符,返回其Age属性值为最大的Person对象数组(1个或多个对象)public Person GetOldest()Person olderPerson = null;People currentPeople = new People();Person currentPerson;fo

22、reach (DictionaryEntry de in Dictionary)currentPerson = de.V alue as Person;if (olderPerson = null)olderPerson = currentPerson;currentPeople.Add(currentPerson);elseif (currentPerson olderPerson)currentPeople.Clear();currentPeople.Add(currentPerson);olderPerson = currentPerson;elseif (currentPerson =

23、 olderPerson)currentPeople.Add(currentPerson);Person personArray = new PersoncurrentPeople.Count;int index=0;foreach (DictionaryEntry de in currentPeople)personArrayindex = de.V alue as Person;index+;return personArray;12. 在People 类上执行ICloneable接口,提供深度复制功能。/深度复制public object Clone()Person currentPer

24、son;Person newPerson;People clonePeople = new People();foreach (DictionaryEntry de in Dictionary)currentPerson = de.V alue as Person;newPerson = new Person();newPerson.Age = currentPerson.Age;/doc/e248e448c850ad02de8041e9.html = /doc/e248e448c850ad02de80

25、41e9.html;clonePeople.Add(newPerson);return clonePeople;第4章Windows程序设计1.PiceureBox能导入的图像类型有gif、jpg、jepg、bmp 、wmf、png2.文本框的双击事件,默认的处理函数名称为textBox1_TextChanged3.resx扩展命名的文件其含义是资源文件,其中x提示该资源是以xml形式存储的4. 对于OpenFileDialog组件,当选择一个文件并打开时,该文件所在的驱动器名、路径名、文件名和文件扩展名被复制给OpenFileDialog组建的FileName属性5.PictureBox组件

26、有一个属性SizeMode;当该属性设置为Zoom时,加载图片将自动改变大小以填满整个图片框。6.将滚动条组件trackBar的当前值在编辑框textBox1中显示出来,使用的语句是textBox1.Text = Convert.ToString(trackBar.Value);7.把Label1中显示文字的字体设置为隶书,使用的语句是label1.Font = new Font(黑体, label1.Font.Size);8.Timer组件有一个事件,该事件每隔一定的时间间隔周期性的发生,该事件是OnTimer事件第6章数据库开发技术1. /do

27、c/e248e448c850ad02de8041e9.html 使用()命名空间的类访问SQL Server 数据库中的数据。A. System.Data.OleDbB. System.Data.SqlClientC. System.Xml.SerializationD. System.IO正确答案:B2. 在/doc/e248e448c850ad02de8041e9.html中,为了确保DataAdapter对象能够正确地将数据从数据源填充到DataSet中,则必须事先设置好DataAdapter对象的下列哪个Command属性()ADelete

28、 CommandBUpdate CommandCInsert CommandDSelect Command正确答案:D3.为使用/doc/e248e448c850ad02de8041e9.html Data Proviver连接到SQL Server 2000数据库,应将Connection对象的ConnectionString属性中的Provider子属性的值设置为: ()AProvider=SQLOLEDBBProvider=SQLSERVERCProvider=Microsoft.Jet.OLEDB.4.0DProvider=MSDAORA正

29、确答案:A4. 在使用/doc/e248e448c850ad02de8041e9.html编写连接到SQL Server 2000数据库的应用程序时,从提高性能的角度考虑,应创建()类的对象, 并调用其Open方法连接到数据库:AOleDbConnectionBSqlConnectionCOdbcConnectionDConnection正确答案:B5.在使用/doc/e248e448c850ad02de8041e9.html 设计数据库应用程序时,可通过设置Connection 对象的()属性来指定连

30、接到数据库时的用户和密码信息。A. ConnectionStringB. DataSourceC. UserInformationD. Provider正确答案:A6.有一个DataSet 对象myDataSet包含两个DataTable 对象Customers 和Orders。Customers 有一个列CustomerID,对每个customer是唯一的。Orders 也有一个列CustomerID。想使用DataRow 对象的GetChildRows 方法来获得当前客户的所有orders。请选择: ()A. 在Customers和Orders间增加一个Orders 的外键约束Custom

31、erID.B. 在Customers和Orders间增加一个数据关联OrderID到myDataSet.C. 创建一个Customers 的唯一约束CustomerID.D. 创建一个Customers 的主键CustomerID.正确答案: B7. 有一个DataSet 对象ordersDataSet包含两个DataTable 对象Orders和OrderDetails.Orders和OrderDetails两者都包含一个列OrderID。在Orders和OrderDetails 间用OrderID创建一个DataRelation 对象orderRelation。Order是父表, Orde

32、rDetails 是子表。使用以下代码增加orderRelation 到ordersDataSet 关联集合。ordersDataSet.Relations.Add(orderRelation);在增加orderRelation前,两个表都没有约束,运行代码行,现在每个表有多少个约束。()A. Orders表1个; OrderDetails表没有。B. Orders表没有; OrderDetails表1个。C. Orders表没有; OrderDetails表没有。D. Orders表1个; OrderDetails表1个。正确答案: D8. 你正在创建一个/doc/e248e448c850ad02de8041e9.html 应用程序来追踪一家公司的销售订单。此应用程序用的是/doc/e248e448c850ad02de8041e9.html DataSet 对象,DataSet 包含了两个DataTable 对象。一个表的名字为Orders,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论