初级C#习题答案

上传人:yo****e 文档编号:78669391 上传时间:2022-04-22 格式:DOC 页数:11 大小:70.50KB
收藏 版权申诉 举报 下载
初级C#习题答案_第1页
第1页 / 共11页
初级C#习题答案_第2页
第2页 / 共11页
初级C#习题答案_第3页
第3页 / 共11页
资源描述:

《初级C#习题答案》由会员分享,可在线阅读,更多相关《初级C#习题答案(11页珍藏版)》请在装配图网上搜索。

1、习题11. 结合教材中图1.1.2所示,说明.NET Framework的组件构成,并解释每个组件所实现的功能。Web Forms提供一组网页设计的类,Web Forms与HTML表单类似;Web Services包括一组设计web服务的类,可用来购造网络服务的应用程序;WinForms提供一组Windows的窗体应用程序设计和开发的类;ASP.NET提供一组用于创建Web应用程序的类;ADO.NET提供一些可与数据库进行交互的类;XML类启用XML操纵、搜索和转换;基本框架类(FCL)提供基本功能,如输入输出、字符串操纵、安全性管理和网络通信等;通用语言规范(CLS Common Langu

2、age specification)规定了使用所有语言都必须遵循的基本语言功能的公共子集;公共类型系统(CTS Common Type System)描述如何在运行时声明、使用和管理像类、结构、枚举、接口等类型,从而便于在各语言之间使用这些类型。2. 什么是.NET Framework?其设计目标是什么?与Windows平台以前的开发平台相比有哪些特点?NET Framework是一个平台,此平台支撑着本书中所要介绍的C#语言。同样,.NET Framework还支持许多其他的语言,如VB.NET,VC+.NET等等。该平台支持多种应用程序开发。除了典型的Windows窗体应用程序和控制台应用

3、程序,还支持Web应用程序、Web服务等各种类型的应用程序。应用.Net Framework可以满足应用程序开发的大部分需要。.NET Framework 旨在实现下列目标: 提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在 Internet 上分布,或者是在远程执行的。 提供一个将软件部署和版本控制冲突最小化的代码执行环境。 提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。 提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。 使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程

4、序和基于 Web 的应用程序)时保持一致。 按照工业标准生成所有通信,以确保基于 .NET Framework 的代码可与任何其他代码集成。 3. 比较C#与Java语言的各自特点。Java对C#有深刻的影响,其语法非常类似,甚至Java类库和.NET基类的结构也非常的相似。并且它们都依赖于一个中间的运行环境。4. 为什么说C#是一种完全的面向对象编程语言?C#的面向对象技术已经成熟,且效率比较高。如支持良好的类结构,并对继承性有一定的限制,一个类可以从无数个类中继承接口,但只能从一个基类中继承其实现方法。C#采用一种更清晰的新语法来描述面向对象的多态性,即声明为“虚”、“纯虚”函数,特别是一

5、个类可以先行提供方法执行方式,在该方法的前面加上abstract关键字,迫使其子类也这么做;而且可以创建不能继承的类,与C+一样,种类齐全的关键字可以严格控制类成员的访问权限。5. 在DOS命令行窗口中编译和运行一个简单的C#程序。项目中Program.cs的代码如下:/using表示程序引用的库,以下的System,System.Collections.Generic和System.Text为控制台应用程序默引用/的库,这几个库由.NET Framework 2.0中提供。using System;using System.Collections.Generic;using System.T

6、ext;/程序将以新建项目时填入的项目名称自动创建一个命名空间,即namespace,命名空间可以控制类,变量等的作/用域,以后将会讲到。类似于java中包的概念。namespace ConsoleHelloWorld /此处的class是类的意思,C#是一门面向对象的语言,所有的程序都由类构成。项目创建的时候,Visual Studio /2005将会自动创建这个Program类。关于面向对象的概念以后将会讲到。 class Program /任何一个可执行的程序中都包含一个Main函数,Main函数是程序的入口。程序启动时,将执行Main函 /数中的代码。 static void Main

7、(string args) /输出Hello World! Console.WriteLine(Hello World!); / Console.ReadLine用于使程序在执行完上面的代码后不立即退出,在用户输入回车键之后才退出程 /序 Console.ReadLine(); 习题21下面哪个不是合法的变量名? AmyVariableIsGoodB99FlakeC_floorDtime2GetJiggyWidIt答:B,因为不能以数字开头。2字符串supercalifragilisticexpialidocious是因为太长了而不能放在string变量中吗?为什么?答:该字符串可以放在str

8、ing变量中,因为对于string变量没有限定长度。3编写一个控制台应用程序,要求用户输入4个int值,并显示它们的乘积。提示:可以考虑使用Convert.ToDouble()命令,该命令可以把用户在控制台上输入的数转换为double;从string转换为int的命令是Convert.ToInt32()。答:static void Main(string args) int firstNumber, secondNumber, thirdNumber, fourthNumber; Console.WriteLine(Give me a number:); firstNumber = Conve

9、rt.ToInt32(Console.ReadLine(); Console.WriteLine(Give me another number:); secondNumber = Convert.ToInt32(Console.ReadLine(); Console.WriteLine(Give me another number:); thirdNumber = Convert.ToInt32(Console.ReadLine(); Console.WriteLine(Give me another number:); fourthNumber = Convert.ToInt32(Conso

10、le.ReadLine(); Console.WriteLine(The product of 0, 1, 2, and 3 is 4., firstNumber, secondNumber, thirdNumber, fourthNumber, firstNumber * secondNumber * thirdNumber * fourthNumber); 4如果两个整数存储在变量val1和val2中,该进行什么样的布尔测试,看看其中的一个(但不是两个)是否大于10?答:(var1 10) (var2 10)5编写一个应用程序,其中包含练习4中的逻辑,让用户输入两个数字,并显示它们,但拒绝

11、接受两个数字都大于10的情况,并要求用户重新输入。答:static void Main(string args) bool numbersOK = false; double var1, var2; var1 = 0; var2 = 0; while (!numbersOK) Console.WriteLine(Give me a number:); var1 = Convert.ToDouble(Console.ReadLine(); Console.WriteLine(Give me another number:); var2 = Convert.ToDouble(Console.Rea

12、dLine(); if (var1 10) & (var2 10) Console.WriteLine(Only one number may be greater than 10.); else numbersOK = true; Console.WriteLine(You entered 0 and 1., var1, var2); 6下面的代码有什么错误? for(i =1; i = 10; i+) if(i % 2) = 0) continue; Console.WriteLine(i); 答:正确的代码为: int i;for (i = 1; i = 0; index-) rever

13、sedString += myStringindex; Console.WriteLine(Reversed: 0, reversedString); 10编写一个控制台应用程序,它接收个字符串,用“yes”替换字符串中所有的“no”。答:static void Main(string args) Console.WriteLine(Enter a string:); string myString = Console.ReadLine(); myString = myString.Replace(no, yes); Console.WriteLine(Replaced no with yes

14、: 0, myString); 11编写一个控制台应用程序,给字符串中的每个单词加上双引号。答:static void Main(string args) Console.WriteLine(Enter a string:); string myString = Console.ReadLine(); string myWords = myString.Split( ); Console.WriteLine(Adding double quotes areound words:); foreach (string myWord in myWords) Console.Write(0 , myW

15、ord); 12下面两个函数都有错误,请指出这些错误。 static bool Write()Console.WriteLine(Text output from function.); static void myFunction(string label, params int args, bool showLabel)if (showLabel)Console.WriteLine(label);foreach (int i in args)Console.WriteLine(0, i);答:第1个函数要求返回一个bool类型的值,但函数体内没有return语句。第2个函数有一个参数数组,

16、但是没有把它放在参数列表的最后。13编写一个应用程序,该程序使用两个命令行参数,分别把值放在一个字符串和一个整型变量中,然后显示这些值。答:static void Main(string args) if (args.Length != 2) Console.WriteLine(Two arguments required.); return; string param1 = args0; int param2 = Convert.ToInt32(args1); Console.WriteLine(String parameter: 0, param1); Console.WriteLine(

17、Integer parameter: 0, param2); 14修改下面的结构,使之包含一个返回订单总价格的函数。 struct orderpublic string itemName;public int unitCount;public double unitCost;答:struct order public string itemName; public int unitCount; public double unitCost; public double TotalCost() return unitCount * unitCost; 习题31“必须手动调用对象的析构函数,否则就

18、会浪费资源”,对吗?答:不是。我们可以用不调用对象的析构函数,因为.NET的运行环境。2需要创建一个对象以调用其类的静态方法吗?答:不需要,直接使用静态方法。3下面的代码有什么错误? public sealed class MyClass / class memberspublic class myDerivedClass : MyClass / class members答:myDerivedClass派生于MyClass,但MyClass是密封类不能派生。4如何定义不能创建的类?答:通过定义它的成员都是私有的。5为什么不能创建的类仍旧有用?如何利用它们的功能?答:不能创建的类可以使用其静态

19、成员。实际上,我们可以通过这些静态成员获得一个实例,如下: class CreateMe private CreateMe() static public CreateMe GetCreateMe() return new CreateMe(); 6编写代码,用虚拟方法GetString()定义一个基类MyClsss。这个方法应返回存储在受保护的字段myString中的字符串,该字段可以通过只写公共属性ContainedString来访问。答:class MyClass protected string myString; public string ContainedString set m

20、yString = value; public virtual string GetString() return myString; 7从类MyClass派生一个类MyDerivdClass。重写GetString()方法,使用该方法的基类执行代码从基类中返回一个字符串,但在返回的字符串中添加文本“(output from derived class)”。答:class MyDerivedClass : MyClass public override string GetString() return base.GetString() + (output from derived class

21、); 8 编写个类MyCopyableClass,该类可以使用方法GetCopy()返回它本身的一个副本。这个方法应使用派生干System.0bject的MemberwiseClone()方法。给该类添加一个简单的属性,并且编写使用该类检查任务是否成功执行的客户代码。答:class MyCopyableClass protected int myInt; public int ContainedInt get return myInt; set myInt = value; public MyCopyableClass GetCopy() return (MyCopyableClass)Mem

22、berwiseClone(); class Class1 static void Main(string args) MyCopyableClass obj1 = new MyCopyableClass(); obj1.ContainedInt = 5; MyCopyableClass obj2 = obj1.GetCopy(); obj1.ContainedInt = 9; Console.WriteLine(obj2.ContainedInt); 9创建一个集合类People,它是下述Person类的集合,该集合中的项目可以通过一个字符串索引符来访问,该字符串索引符是人的姓名,与Perso

23、n.Name属性相同:public class Person private string name; private int age; public string Name get return name; set name = value; public int Age get return age; set age = value; 答:using System;using System.Collections;namespace Exercise_Answers public class People : DictionaryBase public void Add(Person ne

24、wPerson) Dictionary.Add(newPerson.Name, newPerson); public void Remove(string name) Dictionary.Remove(name); public Person thisstring name get return (Person)Dictionaryname; set Dictionaryname = value; 10扩展上一题中的Person类,重载,=和(Person p1, Person p2) return p1.Age p2.Age; public static bool operator (Pe

25、rson p1, Person p2) return p1.Age =(Person p1, Person p2) return !(p1 p2); public static bool operator p2); 11给People类添加GetOldest()方法,使用上面定义的重载运算符,返回其Age属性的值为最大的Person对象数组(1个或多个对象,因为对于这个属性而言,多个项目可以有相问的值)。答:public Person GetOldest() Person oldestPerson = null; People oldestPeople = new People(); Pers

26、on currentPerson; foreach (DictionaryEntry p in Dictionary) currentPerson = p.Value as Person; if (oldestPerson = null) oldestPerson = currentPerson; oldestPeople.Add(oldestPerson); else if (currentPerson oldestPerson) oldestPeople.Clear(); oldestPeople.Add(currentPerson); oldestPerson = currentPers

27、on; else if (currentPerson = oldestPerson) oldestPeople.Add(currentPerson); Person oldestPeopleArray = new PersonoldestPeople.Count; int copyIndex = 0; foreach (DictionaryEntry p in oldestPeople) oldestPeopleArraycopyIndex = p.Value as Person; copyIndex+; return oldestPeopleArray; 12在People类上执行IClon

28、eable接口,提供深度复制功能。答:public class People : DictionaryBase, ICloneable public object Clone() People clonedPeople = new People(); Person currentPerson, newPerson; foreach (DictionaryEntry p in Dictionary) currentPerson = p.Value as Person; newPerson = new Person(); newPerson.Name = currentPerson.Name; newPerson.Age = currentPerson.Age; clonedPeople.Add(newPerson); return clonedPeople; .

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!