- 64.00 KB
- 2022-04-22 11:48:17 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'《ASP.NET动态网站开发教程(第三版)》各章习题参考答案第1章习题参考答案1.答:静态网页和动态网页在客户端看来是除了发送请求是的后缀名外没有其它任何区别,主要是服务器端的区别。静态网页服务器在接收了客户端的请求后直接读取相应的网页文件返回给客户端,而动态网页服务器在接收到了客户端发来的请求后先找到相应文件然后根据相应参数将文件编译成标准的html代码,再返回给客户端。2.答:asp:优点:简单易学、容易上手;缺点:不能跨平台,速度较慢。php:优点:免费、开放源代码;缺点:缺乏大公司的支持。jsp:优点:跨平台;缺点:复杂难学。3.答程序结构清晰、效率增强、顶级开发工具支持、开发简单、支持Web服务。4.答:QQ系统同时使用了C/S和B/S模式,QQ网站的服务器是服务器端,因为它提供服务;而家中的电脑就是客户端了。第2章习题参考答案1.HTML超文本标记语言,是一种基于标记的网页设计语言。XHTML是为了适应XML而重新改造的HTML,也是一种标记语言。它可以看作是从HTML到XML的过渡。XHTML要求在网页中出现的任何元素都应该被标记出来。2.
和
标记都可以用于换行,
是段落标记,在换行的同时,会在前段与后段之间留一空白行。
不会产生空行。3.
4.参考2_4.html5..参考2_5.html6..参考2_6.html第3章习题参考答案1.答:值类型和引用类型的区别在于,值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。
值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际数据则保存在堆中。注意,堆和堆栈是两个不同的概念,在内存中的存储位置也不相同,堆一般用于存储可变长度的数据,如字符串类型;而堆栈则用于存储固定长度的数据,如整型类型的数据int(每个int变量占用四个字节)。由数据存储的位置可以得知,当把一个值变量赋给另一个值变量时,会在堆栈中保存两个完全相同的值;而把一个引用变量赋给另一个引用变量,则会在堆栈中保存对同一个堆位置的两个引用,即在堆栈中保存的是同一个堆的地址。在进行数据操作时,对于值类型,由于每个变量都有自己的值,因此对一个变量的操作不会影响到其它变量;对于引用类型的变量,对一个变量的数据进行操作就是对这个变量在堆中的数据进行操作,如果两个引用类型的变量引用同一个对象,实际含义就是它们在堆栈中保存的堆的地址相同,因此对一个变量的操作就会影响到引用同一个对象的另一个变量。2.答:C#支持的数据类型有: (1)值类型 包括:简单类型、结构类型、枚举类型。其中,简单类型又分为:整型、布尔型、字符型、浮点型、小数型。 (2)引用类型 包括:对象类型、类类型、接口、元数据、字符串类型、数组。3.答:1)12.34--1,234.00%good2)0--good3)456--00456good4.答:面向对象的程序设计(Object-OrientedProgramming,OOP)是一种基于结构分析的、以数据为中心的程序设计方法。其主要思想是将数据及处理这些数据的操作都封装(Encapsulation)到一个被称为类(Class)的数据结构中,使用这个类时,只需定义一个类的变量,这个变量被称为对象(Object)。类的成员有:成员常量,代表与类相关的常量值。字段,即类的变量。成员方法,执行类中的复杂计算和其他操作。事件,定义了由类产生的事件公告,用于说明发生了什么事情。属性:定义命名的属性以及与读写属性相关的行为。索引指示器,允许类的实例通过与数组相同的方法来索引。操作符,定义类的实例能够使用的操作符。构造函数,在类被实例化时首先执行,完成对类的实例的初始化。析构函数,在类被删除之前最后执行,用于对类的实例销毁。对象是一个类的变量,这个变量被称为对象(Object)。5.答:由于C#中的类不支持多重继承,而客观世界出现多重继承的情况又比较多。为了避免传统的多重继承给程序带来的复杂性等问题,同时保证多重继承带给程序员的诸多好处,C#提出了接口(interface)的概念,通过接口来实现多重继承的功能。接口用于定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。有了这个协定,就可以抛开编程语言的限制(理论上)。接口可以包含方法、属性、事件和索引器。6.代码如下:classA//定义一个类{publicA(){Console.WriteLine("A");}}classB//定义一个类{
publicB(){Console.WriteLine("B");}}classC:A{Bb=newB();}classD{publicstaticvoidMain(){Cc=newC();//执行结果就为"A””B".}}7.代码如下:usingSystem;classMyClass{publicinti;privateintj;protectedintk;publicvoidmethod1(){Console.WriteLine("publicmethod.");}privatevoidmethod2(){Console.WriteLine("privatemethod.");}protectedvoidmethod3(){Console.WriteLine("protectedmethod.");}}classmymain:MyClass{publicstaticvoidMain(){MyClasst=newMyClass();Console.WriteLine("i={0}",t.i);Console.WriteLine("j={0}",t.j);//会出现编译错误,私有成员不允许在其它类中访问
Console.WriteLine("k={0}",t.k);//会出现编译错误,应该创建MyMain的对象,然后通过MyMain的对象访问t.method1();t.method2();//会出现编译错误,私有的方法不允许在其它类中调用t.method3();//会出现编译错误,应该创建MyMain的对象,然后通过MyMain的对象调用该方法}}8.代码如下:usingSystem;classTest6{publicstaticvoidMain(){ stringstr=""; while(str.Length<=3) {Console.Write("请输入一个长度大于3的字符串:");str=Console.ReadLine();}//(1)Console.WriteLine("字符串的长度为:{0}",str.Length);//(2)inti=str.IndexOf("a");if(i>-1){Console.WriteLine("第一个出现字母a的位置是:{0}",i);} else{Console.WriteLine("字符串中不包含字母a。");}//(3)stringstr1=str.Insert(3,"hello");//在第3个(初始序号为)字符前插入helloConsole.WriteLine("插入hello后的结果为:{0}",str1);//(4)stringstr2=str1.Replace("hello","me");Console.WriteLine("将hello替换为me后的结果为:{0}",str2);//(5)string[]arr=str2.Split("m");Console.WriteLine("以m为分隔符分离后的字符串有:");for(intj=0;j |