《c#.net程序设计案例教程》课后习题参考答案 下载本文

内容发布更新时间 : 2024/12/24 2:20:13星期一 下面是文章的全部内容请认真阅读。

}

则执行代码段后,n的值是( B )

A. 0 B. 4 C. 6 D. 7 二、填空题

1.条件“金额大于等于500,小于1000”的表达式为( 金额>=500 &&金额<1000 )。

2.在C#程序中,要设置Label控件的大小不随着内容而改变,应修改( AutoSize )属性的值为False。

3.按键盘上的( F7 )键可以进入代码编辑窗口。

4.C#中的4种循环结构是( for )、( while )、( do…while )和( foreach )。

5. 专门用于集合元素访问的循环语句是( foreach )。

6. Visual Studio提供的( try )方法就是专门用于人为引发异常的。。 7. ( show )方法用于显示消息框。 8. 关闭应用程序的语句是( this.Close(); )。

三、问答题

1.简述if语句嵌套时,if与else的配对规则。

答:else总是与其前面最近且尚未配对的在同一复合语句中的if

2. 多分支条件语句中的控制表达式可以是哪几种数据类型? 答:表达式的结果必须是整数、字符或枚举量值

3. 多分支条件语句中,case子句中在什么情况下可以不使用break语句?

答:break语句是用来执行完一个case分支后,然后跳出switch语句;而在一些特殊的情况下,比如多个不同的case值要执行一组相同的操作的时候,这时可以省略break语句。

4. while语句和do…while语句有何区别?

答:do-while循环就是先执行再判断,while循环是先判断后执行。

5. 异常处理有哪几种常用的语法格式? 答:try语句有以下三种可能的形式:

(1)try…catch语句:一个try块后接一个或多个catch块。 (2)try…finally语句:一个try块后接一个finally块。 (3)try…catch…finally:一个try块后接一个或多个catch块,后面再跟一个finally块。

习题4

一、选择题

1.在关键字public后面定义的成员为类的( B )成员。 A.私有 B. 公有 C.保护 D. 任何 2.如果不带修饰符,C#中类成员被默认声明成( C )。

A.public B. protected C.private D. static

2.可以在一个类中定义多个同名的方法,但只有使用的参数类型或者参数个数不同,编译器便知道在何种情况下应该调用哪个方法,这是( D )。

A.虚方法 B. 运算符重载 C.抽象方法 D. 方法重载

3.关于构造函数,下列说法错误的是( B )。 A. C#中对对象进行初始化的方法叫构造函数。 B. 构造函数可不与类同名,可以用户自己命名。

C. 如果一个类没有声明任何实例构造函数,则系统会自动提供一个默认构造函数。 D. 构造函数在类的声明中,可以有函数名相同,但参数个数不同的多种形式。 4.下列关于C#中继承的描述,错误的是( A )。 A.一个子类可以有多个父类。 B.通过继承可以实现代码重用。

C.派生类还可以添加新的特征或者是修改已有的特征以满足特定的要求。 D.继承是指基于已有类创建新类的语言能力。

5.可以在一个类中定义多个同名的方法,但只有使用的参数类型或者参数个数不同,编译器便知道在何种情况下应该调用哪个方法,这是( D )。

A.虚方法 B. 运算符重载 C.抽象方法 D. 方法重载

6.关于构造函数,下列说法错误的是( D )。 A. 默认构造函数定义了对象的默认状态。

B. 非默认构造函数将根据传入的参数来初始化对象的数据。

C. 如果没有为类定义默认构造函数,编译器将自动为类创建一个默认构造函数。 D. 非默认构造函数应当总是包含对象的默认状态。

7.接口是一种引用类型,在接口中可以声明( A ),但不可以声明公有的域或私有的成员变量。

A. 方法、属性、索引器和事件 B. 方法、属性信息、属性 C. 索引器和字段 D. 事件和字段

8.声明一个委托public delegate int myCallBack(int x);则用该委托产生的回调方法的原型应该是( B )。

A. void myCallBack(int x) B. int receive(int num) C. string receive(int x) D. 不确定的

二、填空题

1.面向对象程序设计具有( 封装 )、( 继承 )和( 多态 )等三个基本特征。

2.( 字段 )是类定义中的数据,也叫类定义中的变量。

3.( 方法 )实质上就是函数,通常用于对字段进行计算和操作,即对类中的数据进行操作。

4.方法参数传递按性质可以分为( 按值传递 )和( 按引用传递 )两种。

5. 构造函数是一种特殊的方法成员,其主要作用是在创建对象时( 初始化新对象 )。

6. 声明静态成员需要使用( static )修饰符。

7. 在进行类定义时不需要编写代码就可以包含另一个类定义的数据成员、方法成员等的特征,称为类的( 继承 )。

8. 委托是一种引用数据类型,派生于.NET Framework中的( Delegate )类。

三、问答题

1.简述类与对象的关系。

答:类是对象的抽象描述和概括,例如:车是一个类,自行车、汽车、火车也是类,但是自行车、汽车、火车都属于车这个类的子类,因为它们有共同的特点就是都是交通工具,都有轮子,都可以运输。而汽车有颜色、车轮、车门、发动机等特征,这是和自行车、火车所不同的地方,是汽车类自己的属性,也是所有汽车共同的属性,所以汽车也是一个类,而具体到某一辆汽车,它有具体的颜色、车轮、车门、发动机等属性值,因此某辆汽车就是一个对象。

类是抽象的概念,对象是具体的概念,在软件设计中很容易区分类和对象。假设软件中的按钮是一个类,按钮类具有长度、宽度、位置、颜色等属性,具有单击、双击、移动等行为,当所设计的一个具体的按钮具有特定的长度、宽度、位置、颜色等属性值,具有单击、双击、移动时所发生的具体行为,那么这时就构成了一个按钮对象。

2. 属性是类的数据成员吗?什么是方法?C#允许在类定义外部声明方法吗?

答:属性是类的数据成员。方法用来完成类或对象的行为,在面向对象编程语言中,类或对象是通过方法来与外界交互的,所以方法是类与外界交互的基本方式。方法通常是包含解决某一特定问题的语句块,方法必须放在类定义中,方法同样遵循先声明后使用的原则。C#不允许在类定义外部声明方法

3. 在方法的调用中,基本数据类型作为参数默认是按什么方式传递?类对象作为参数默认是按什么方式传递的?类对象可以按值方式传递吗?基本数据类型参数按引用传递时,应该怎么做?参数按值传递与按引用传递的区别是什么?

方法的参数传递按照性质可分为按值传递与按引用传递。 参数按值的方式传递是指当把实参传递给形参时,是把实参的值复制给形参,实参和形参使用的是内存中两个不同的值,所以这种参数传递方式的特点是形参的值发生改变时,不会影响到实参的值,从而保证了实参数据的安全。

基本类型(包括string与object)的参数在传递时默认为按值传递。 一个方法只能返回一个值,但实际应用中常常需要方法能够修改或返回多个值,这时只靠return语句显然是无能为力的。如果需要方法返回多个值,就可以使用按引用传递参数的

方式实现这种功能。按引用传递是指实参传递给形参时,不是将实参的值复制给形参,而是将实参的引用传递给形参,此时,实参与形参使用的是同一个内存地址中的值。这种参数传递方式的特点是形参的值发生改变时,同时也改变实参的值。

基本类型参数按引用传递时,形参实际上是实参的别名。基本类型参数按引用传递时,实参与形参前均须使用关键字ref。

4. 重载方法的基本要求是什么?C#中的静态方法应该怎样调用? 方法重载有两点要求:

(1)重载的方法名称必须相同;

(2)重载方法的形参个数或类型必须不同,否则将出现“已经定义了一个具有相同类型参数的方法成员”的编译错误。

静态方法属于类本身,只能使用类调用 ,不能使用对象调用。

5. 什么是类的继承?怎么定义派生类? 继承就是在已有类的基础上建立新的类,新的类既具备原有类的功能和特点,又可以将这些功能在原有基础上进行拓展。由于新的类是由原来的类发展而来,所以又被称为原有类的派生类(子类),而原有类就是新类的基类(父类)。

定义一个继承于基类的派生类的语法格式如下: 【访问修饰符】 class 派生类名称:基类名称

{

//派生类的类体

}

其中,访问修饰符可以是public、protected和private,通常都使用public以保证类的开放性,并且public可以省略,因为类定义的访问控制默认是public。“:基类名称”表示所继承的类。

定义的派生类默认继承了基类的所有成员,包括变量和方法(构造函数和析构函数除外),基类中用private访问修饰符限制的成员不能被继承。

6. 什么是多态性?多态性有何作用?

多态性可以简单地概括为“一个接口,多种方法”,它在程序运行的过程中才决定调用的方法,多态性是面向对象编程的核心概念。

多态使得子类(派生类)的实例可以直接赋予基类的对象(不需要进行强制类型转换),然后直接就可以通过这个对象调用子类(派生类)的方法。

多态则是为了实现另一个目的——接口重用,因为接口是最耗费时间的资源,实质上设计一个接口要比设计一堆类要显得更有效率。

习题5

一、选择题

1.在C#.Net中,用来创建主菜单的对象是( C )。 A. Menu B.MenuItem C.MenuStrip D.Item