《C#程序设计易懂易会教程习题》解答_第1页
《C#程序设计易懂易会教程习题》解答_第2页
《C#程序设计易懂易会教程习题》解答_第3页
《C#程序设计易懂易会教程习题》解答_第4页
《C#程序设计易懂易会教程习题》解答_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、第1章 程序设计简述习题1-1 程序设计经历了几个发展阶段?答:经历了机器语言、汇编语言、面向过程程序设计语言、面向对象程序设计语言。1-2 下列说法正确的是( )。A机器语言是唯一计算机直接能识别的语言,其他语言编写的程序最终都要编译生成机器语言形式才能被计算机识别。B机器语言现在已经淘汰了,已经完全没有用了。C汇编语言程序中的效率最高是指编程者需要编写的代码数量最少。D面向过程的程序设计比面向对象的程序设计复杂,所以,现在都学习面向对象的程序设计。E类是面向对象的程序设计的重要概念,现实中先有对象后有类,面向对象程序设计先设计类再通过类定义对象,即先有类后有对象。答:A、E 1-3 请简单

2、说明控制台C#应用程序的构成。答:控制台C#应用程的序的最简单构成为:public class P1_1 /定义类 public static void Main( ) /Main方法是程序的入口也是出口 System.Console.WriteLine(我在学习C#.); /执行的语句 还可以定义多个类,各个类可以放在一个或多个命名空间中。现在的程序主要是Windows应用程序和WEB应用程序,为了避开设计窗体和控件学习C#程序设计,通常采用的方法是从控制台应用程序入门。1-4 完成控制台应用程序的设计,输出一行文字“Hello !”。答:程序为:public class Class1 /定

3、义类 public static void Main( ) System.Console.WriteLine(Hello!); 1-5 完成控制台应用程序的设计,用消息框输出一行文字“Visual C#”。答:在编写程序前先在项目中引用System.Windows.Forms命名空间using System;using System.Windows.Forms; class Class1 /Main方法可以没有public关键字修饰 static void Main(string args) /用命名空间Forms中的消息框类MessageBox的方法成员Show MessageBox.Sho

4、w(我有信心学好C#! ); 1-6 完成一个Windows窗体的程序设计,窗体中有一个按钮和一个标签,按钮上显示“Press Me”,标签上先显示“Hello!”。当程序执行后单击按钮,标签显示“This is my Windows.”。答:(程序代码略)操作:建一个Windows窗体应用程序,向窗体中拖放一个按钮一个标签,在按钮的属性Text设置为“Press Me”,在标签的属性Text设置为“Hello!”,双击按钮,在所在方法中添加代码:this.label1.Text = This is my Windows.;第2章 程序设计基础习题2-1 什么是变量?变量的作用域是怎样的?变量

5、和常量有什么区别?答:变量是程序设计中值可以改变的量。变量的作用域为,从变量定义的位置开始至所在语句块结束,在该域内的下层语句块中可见。常量是程序设计在编译时就规定了值,不能再改变的量,变量和常量在程序的作用域内均可以读出所保存的值,不同的是常量对保存的值不能改变,变量对保存的值可以改变。2-2 在C#编程语言中,变量为什么要先定义后使用?答:变量只有定义了才分配内存空间,有了存放数据的内存空间后,使用变量才有意义,所以,变量要先定义后使用。2-3 试述下列程序段中存在的问题。 程序段1: using System;class Testpublic static void Main()int

6、b;if(b0) int b = 5; int c = a + b; System.Console.writeLine(c = +c); 答:程序段1中错误:1、b变量未赋值就在if语句表达式中进行运算;2、console.WriteLine 第一个字母应大字; 3、b变量在if语句块中重复定义。 程序段2中错误: 1、Main方法不是静态方法; 2、变量c的使用超出了作用域。(放到外面定义也会出错,赋值为0,就可以了,想一想?3、writeLine 第一个字母应大字;2-4 求下面表达式的值。 x*10+y%8/2 (设x=2,y=34) (int)(a+b)0&c=0(设 a = 1.3,

7、b = 5,c = -2)答: 21 False2-5 下面的字符组合不能作为标识符的是( )。 A. #_type B. public C. _bool D. 2008yearE. Double F. English G. a H. new 答:A、B、D、H2-6 编写程序求正方形的面积,要求从键盘输入边长,显示适当的输出信息。答:程序:using System;class Class1static void Main()double size; Console.Write(请输入正方形的边长: );string s = Console.ReadLine(); size = double.

8、Parse(s); double area = size*size; Console.WriteLine(正方形的面积为 0,area);第3章 数据类型习题3-1 试述值类型和引用类型的主要区别。答:值类型和引用类型的区别在于:值类型变量直接存储数据,引用类型变量存储数据存放的位置(引用)。3-2 试述枚举类型的用途。答:通过枚举类型可以方便地表达有关常量集合的信息,枚举类型的变量值不会超出常量集合范围。如:星期日、星期一 星期六等。3-3 下面数据类型是值类型的有( )。 A浮点数类型 B字符串类型 C数组类型 D. 接口类型 E小数类型 F布尔类型 Gobject类型 H. 枚举类型答:

9、A、E、F、H3-4 下面哪一种类型是所有类型的基类类型?( ) A. 值类型 B. 类类型 C. 委托类型 D. object类型 E. Int32类型 F. 引用类型 G. 基本类型 H.System类型答:D3-5 下面有关数据类型转换的说法正确的是( )。A结构类型和类类型主要的区别在于结构是值类型,类是引用类型。B字符类型和数值类型是不能进行相互转换的。C整数类型至双精度类型必须显示转换。D浮点数类型到整数类型的显示转换可以进行,但可能会丢失数据。答:A、D3-6 下面关于引用类型的说法正确的是( )。A委托可以封装一个方法的引用,进行适当处理就可以执行被封装的方法。B结构类型是值类

10、型,但结构中成员可以是引用类型。C接口中只能有方法说明,而无方法的实现。D类和结构的主要区别是类可以有方法,而结构不能有方法。答:A、B、C3-7 下面有关数组的说法正确的是( )。A数组中元素必须是同一种类型。B字符数组和字符串是一样的,只是叫法不同。C字符串变量可以用与字符数组类似的方法读取字符串中字符。D数组元素如果是值类型,则该数组就为值类型。答:C3-8 下列程序的运行结果是( )。using System;class Testpublic static void Main()const double PI = 3.14;int radius = 1;int area = radiu

11、s*radius*(int)PI;Console.WriteLine(area = +area);答:运行结果为:area = 3Press any key to continue3-9 编写程序,用两个数组保存26个大写字母和26个小写字母。答:程序:using System;class Testpublic static void Main()char a = new char26;char b = new char26;int i=0;for(char c=a,d=A;c=z;c+,d+,i+)ai = c;bi = d;for(i=0;ia.Length;i+)Console.Writ

12、e( +ai);Console.WriteLine();for(i=0;i=1&t=1&t=10);Console.WriteLine(您输入的数为: +t);4-7 编写程序,有三个整型变量,各有专门用途,变量的值不允许进行交换,试用if 语句和输出语句按变量从小至大的顺序输出变量值。答:程序:using System;class Testpublic static void Main()int a = int.Parse(Console.ReadLine();int b = int.Parse(Console.ReadLine();int c = int.Parse(Console.Rea

13、dLine();if(ab)if(ac)if(bc)Console.WriteLine(a b c);elseConsole.WriteLine(a c b);elseConsole.WriteLine(c a b);elseif(bc)if(ac)Console.WriteLine(b a c);elseConsole.WriteLine(b c a);elseConsole.WriteLine(c b a);4-8 写程序,计算10以内的素数的积。答:程序:using System;class Testpublic static void Main()int t = 1;bool prim

14、e;for(int i=1;i10;i+)prime = true;for(int j=2;ji;j+)if(i%j=0)prime = false;break;if(prime)t = t*i; Console.WriteLine(10以同的素数的积为: +t);4-9 编写程序,求输入的两个正整数的最大公约数。答:程序:using System;public class CommonDivisorpublic static void Main()int x = Convert.ToInt32(Console.ReadLine();int y = Convert.ToInt32(Consol

15、e.ReadLine();for(int i=2;in;i+)if(n%i=0)Console.Write( +i);4-10 编写程序,求输入的两个正整数的最小公倍数。答:程序:using System;public class CommonMultiplepublic static void Main()int x = Convert.ToInt32(Console.ReadLine();int y = Convert.ToInt32(Console.ReadLine();int z = x*y;for(int i=1;i=z;i+)if(i%x=0&i%y=0)Console.Write

16、Line(最大公倍数为:+i);break;第5章 方法习题5-1 类的静态方法和实例方法有何区别?答:简单的讲静态方法用static关键字修饰,实例方法不用static关键字。静态方法体现了面向过程程序设计的程序设计方式,实例方法体现了面向对象的程序设计方式。在C#面向对象程序设计语言中,对面向过程程序包容,区别是将数据和方法都加上static关键字修饰,并且在面向对象中加以合理利用,使用静态方法可以省去使用实例方法定义对象时的内存开销,但静态方法只能访问静态的数据成员。类的实例方法和非静态的数据成员构成了面向对象的程序设计逻辑思维,将数据的存储和数据的操作捆绑在一起,这也是面向对象程序设计

17、最为重要的地方。5-2 下面关于方法的说法正确的是( )。A. 方法用public修饰表示该方法是公有的。B. 方法可以有返回类型也可以设有,没有返回类型时不需再做说明。C. 方法名用标识符,所以,方法名第一个字母需大写。D. 当方法无参数时,定义方法时小括号也可以不写。E. 方法的参数表中如果多个参数类型相同,则多个参数可以一次定义。F. 方法体至少要有一条语句。答:A5-3 对静态方法下面说法正确的是( )。A. 类的静态方法定义时必须用static关键字。B. 类的静态方法可以用类调用,也可以用类的对象调用。C. 类的静态方法必须有方法参数。D. 类的静态方法只能访问类的静态数据成员。答

18、:A、D5-4 对实例方法下面说法正确的是( )。A. 类的实例方法定义时必须有访问修饰符。B. 类的实例方法可以进行方法重载,静态方法不能重载。C. 类的实例方法调用前必须先定义对象。D. 类的实例方法定义时参数的功能和类的静态方法参数的功能是一样的。答:A、C、D5-5 下面程序完成求1至100的和的功能,试用静态方法完成求和功能;class SumTeststatic void Main()int sum = 0;int i = 1;while(i=100)sum = sum + i;i = i + 1;System.Console.WriteLine(1至100的和为:+sum); 答

19、:程序:class SumTeststatic void Main()int sum = Sum();System.Console.WriteLine(1至100的和为:+sum);static int Sum()int s = 0;int i = 1;while(iy)return x;elsereturn y;第6章 字符串和数组习题6-1 编写程序,要求生成一个新的有序(字符值由小至大)字符串,新字符串由一个已知字符串元素构成。答:程序:using System;public class Testpublic static void Main()string str = Administ

20、rator;char ch = str.ToCharArray();for(int i=0;ich.Length-1;i+)for(int j=i+1;jchj)char temp = chi;chi = chj;chj = temp;for(int i=0;ich.Length;i+)Console.Write( +chi);Console.WriteLine();6-2 编写程序,要求对一串有空格的字符串进行处理,最终得到一个清除了空格的字符串。答:程序:using System;public class Testpublic static void Main()string str =

21、Visual Studio C#;string s = null;for(int i=0;istr.Length;i+)if(stri!= )s = s + stri;Console.WriteLine(s);6-3 编写程序,键盘输入整数数组元素,然后将数组元素倒置(即前后对应元素互换),并输出数组元素值。答:程序:using System;public class Testpublic static void Main()Console.Write(请输入数组的长度: );int n = Convert.ToInt32(Console.ReadLine();int x = new intn

22、;Console.WriteLine(请输入 0 个数组元素:,n);for(int i=0;ix.Length;i+)xi = Convert.ToInt32(Console.ReadLine();for(int i=0;ix.Length;i+)Console.Write( +xi);Console.WriteLine();for(int i=0;ix.Length/2;i+)int temp = xi;xi = xx.Length-1-i;xx.Length-1-i = temp;for(int i=0;ix.Length;i+)Console.Write( +xi);Console.W

23、riteLine();6-4 编写程序,找出双精度数组元素2.3,5,21,-3.2,18.4,-5,1.2,-4.5中的最小值,并放在数组下标0的位置。答:程序:using System;public class Testpublic static void Main()double x = new double2.3,5,21,-3.2,18.4,-5,1.2,-4.5;for(int i=0;ixi)double temp = xi;xi = x0;x0 = temp;for(int i=0;ix.Length;i+)Console.Write( +xi);Console.WriteLi

24、ne();6-5 编写程序,将整数类型数组中小于零的数保存在一个新的数组中,要求不能有内存空间的浪费。答:程序:using System;public class Testpublic static void Main()int x = new int2,-3,5,22,-13,42,-18,-5,12,-45;int n = 0;for(int i=0;ix.Length;i+)if(xi0)n+;int y = new intn;int j = 0;for(int i=0;ix.Length;i+)if(xi0)yj+ = xi;for(int i=0;i0)m = m/10;k+;m =

25、 n;int x = new intk;for(int i=0;ix.Length;i+)xi = m%10;m = m/10;for(int i=0;ix.Length-1;i+)for(int j=i+1;jx.Length;j+)if(xixj)int temp = xi;xi = xj;xj = temp;m = x0;for(int i=1;ix.Length;i+)m = m*10+xi;Console.WriteLine(组合成的最大正整数为: +m);6-7 编写程序,从键盘输入一字符串“12 3 456 78 26 90 18”,将字符串中的整数提取出来,存入一个数组中,要求

26、数组的长度为字符串中可取整数的个数。答:程序:using System;public class StringToArraypublic static void Main()string str = 12 3 456 78 26 90 18;int k = 1;for(int i=0;istr.Length;i+)if(stri = )k+;int a = new intk;string s;k = 0;for(int i=0;istr.Length;i+)s = null;while(istr.Length&stri!= )s+=stri;i+;ak+=int.Parse(s);for(in

27、t i=0;ia.Length;i+)Console.Write( +ai);Console.WriteLine();6-8 编写程序,用一张100元钞票换成面值分别为20元、10元、5元、1元的四种钞票共10张,每种钞票至少1张,输出有哪几种可能的兑换方案?每种面值的钞票各多少张?答:程序:using System;public class Testpublic static void Main()int n=0;for(int i=1;i5;i+)for(int j=1;j8;j+)for(int k=1;k14;k+)for(int m=5;m0)if(m%2=0)p+;elseq+;m

28、 = m/10;m = n;int x = new intp;int y = new intq;int ii=0,jj=0;for(int i=0;ip+q;i+)if(m%2=0)xii+ = m%10;elseyjj+ = m%10;m = m/10;Sort(x);Sort(y);p = Big(x);q = Big(y);Console.WriteLine(奇数组合的最大数为: +q);Console.WriteLine(偶数组合的最大数为: +p);public static void Sort(int x)for(int i=0;ix.Length-1;i+)for(int j=i

29、+1;jx.Length;j+)if(xixj)int temp = xi;xi = xj;xj = temp;public static int Big(int x) int p =x0;for(int i=1;ix.Length;i+)p = p*10+xi;return p;6-10 编写猜数程序,由计算机的随机函数自动生成09之间的一个数(用Random类的Next()方法),给三次猜数机会,如果猜错给出提示信息是“大了”或“小了”,猜数结束给出适当的对错判断信息。答:程序:using System;public class GuessNumberpublic static void

30、Main()Random r1 = new Random();int n = r1.Next(10);int guess;bool right = false;Console.Write(请猜测一个09之间的一个数:);for(int i=0;in)Console.WriteLine(大了点!);elseConsole.WriteLine(小了点!);if(right)Console.WriteLine(猜对了。你真行!);elseConsole.WriteLine(该数为:0 ,再加油!,n);第7章 类 和 对 象习题7-1 什么是类? 什么是对象?答:类是对一组具有相同特征(数据成员)和

31、相同行为(方法成员)的对象的抽象描述。对象就是指世界上的万事万物。7-2 类和对象之间的关系是怎样的?答:世界上的万事万物形态各异,一个对象是一个独立的单位,人们经过对对象的认识,将具有相同属性和行为的对象归为一类。人们的认识过程是先有对象再归类。程序设计要模拟客观现实,开发人员通过仿造人类对类的认识设计类,并通过类来定义产生对象。即程序设计是先有类后有对象。7-3 类的数据成员有哪些?类的方法成员有哪些?答:类的数据成员有常数和字段)。类的方法成员有方法、属性、事件、索引器、实例构造方法、静态构造方法等)。7-4 构造方法有什么特点?答:构造方法是类对象的初始化方法。每新建一对象,都会自动调

32、用构造方法来完成对对象的初始化操作。7-5 面向对象程序设计有哪三大特征?答:封装、继承、多态7-6 试找出生活中的两种对象进行数据抽象和行为抽象。答:(自己找可仿照下列)时钟(Clock)数据抽象:int hour ; int minute ; int second ;行为抽象:TimeRun(); ShowTime() ; SetTime() ; TimeAlarm();狗(dog)数据抽象:string name ; bool sex ; int age ; int height; string furColor ; 行为抽象:Eat() ; Walk() ; Run() ; Yaff(

33、) ; Guard() ; Smell();人(Person)数据抽象:string name ; bool sex ; int age ; int height行为抽象:Eat() ; Walk() ; Run() ; Work() ; Study() ;7-7 试列举生活中封装的实例。答:电视机、洗衣机等家用电器的外壳。7-8 试找出一例有继承关系的事物,并画出分类层次图。答:(自己找可仿照下列)交通工具分类层次图,如图一所示 图一图形分类层次图,如图二所示。 图二7-9 试述类的属性和索引器的区别?答:属性和索引器都是有方法的方式访问类的数据成员,属性主要用于访问的是非集合类型的数据成员

34、,索引器主要访问的是集合类型的数据成员。一个类可以没有属性和索引器,但只可以有多个属性,最多只能有一个索引器。属性和索引器都是C#程序设计的方法机制,并不规定一定只能访问数据成员,但一般使用都是对数据成员的访问,也建议这样使用,因为可提高程序的可读性。属性和索引器都有set、get两个访问器,分别可用于读和写。7-10 什么是多态性?多态性指同一事物在不同的条件下表现出不同的形态,包括两个方面:编译多态性和运行时多态性。7-11 定义有公有访问权限的Dog类,为该类添加下列字段和方法。 公有定段sex,代表雌雄,数据类型为bool。 公有字段age,代表年龄,数据类型为int。 构造方法Dog

35、(bool,int),设置为雌性,2岁。 无返回值方法Speak(),用于介绍动物: 当sex的值为true,方法返回一个字符串 “I am a male Dog!”; 当sex的值为false,方法返回一个字符串 “I am a female Dog!”;另外再定义一个类Test,包含有Main()方法,Main()方法中定义Animal对象,执行Speak()方法。答:程序:using System;public class Testpublic static void Main()Dog animal = new Dog(true,2);animal.Speak();public class Dogpublic bool sex;public int age;public Dog(bool sex,int age)this.sex = sex;this.age = age;public void Speak()if(this.sex)Console.WriteLine(I am a male Dog!);elseConsole.WriteLine(I am a femal Dog!);7-12

温馨提示

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

评论

0/150

提交评论