c - 程序设计课后习题与解答[1] 下载本文

6.写出下列函数的功能。 static float FH() { float y=0,n=0;

int x = Convert.ToInt32(Console.ReadLine()); //从键盘读入整型数据赋给x

while (x!=-1) {

n++; y+=x;

x = Convert.ToInt32(Console.ReadLine()); }

if (n==0) return y; else return y/n; }

答案:求出从键盘上输入的一批常数的平均值,以-1作为结束输入的标志。

三、程序设计题

1. 创建控制台应用程序,判断从键盘上输入的正整数是否“回文数”。所谓“回文数”

指的是正读反读都相同的数,例如1234321。

2. 建立Windows窗体应用程序,用随机函数生成一个M×N的2位数矩阵A,然后使

其旋转90o,形成另一矩阵B,并使矩阵A和B显示在窗体上。 3. 编写程序,利用随机函数为数组A赋予10个随机二位整数,找出其中具有最大值的

元素并指示其位置。 4. 编写程序,从利用随机函数产生的20个2位整数元素中,找出最接近平均值的元素。

要求:在窗体上显示这20个元素、它们的平均值以及最接近平均值的元素。

5. 编写程序,在文本框中输入一段英文短文,单击按钮,就能在标签控件中指示出现

次数最多的字母,并统计该字母出现的次数。(不区分大小写)

6. 创建图6-21所示Windows窗体应用程序,求解猴子选大王问题。n只猴子选大王的

选举方法如下:所有猴子按1、2、?、n编号围坐成一圈,从第1号开始按照1、2、?、m报数,凡报到m号的猴子退出圈外;剩下的猴子重复上述报数退出过程直到圈内只剩下一只猴子为止,最后剩下的猴子便是大王。设计如下图所示的窗体界面。程序运行时输入猴子总数n和报数的终止数m,单击“选举”按钮进行选择,退出竞争猴子的编号通过标签输出;猴王编号显示在对应文本框中;单击“清除”按钮清除所有信息;单击“退出”按钮结束程序运行。

第 33 页 共 88 页

图6-20 “猴子选大王”

7.创建一个具有1,000,000个元素的数组,以4位随机正整数赋值,然后进行从小到大的排序。在窗体上输出排序的开始时间、结束时间和以毫秒为单位的排序时间。

习题4.1

一、单项选择题

1. 在面向对象程序设计的概念中,对类(class)的描述,错误的是( D )。 (A)类(class)是一组具有相同数据结构和相同操作的对象的集合 (B)类(class)用来定义对象可执行的操作

(C)类(class)是创建对象实例的模板,对象是类的一个实例 (D)当应用程序通过类(class)创建一个对象时,该对象就是一个窗口 2. 在默认的情况下,省略的类访问修饰符是( A )

(A)private (B)public (C)protected (D)internal 3. 在下面的类声明中,属于私有字段的是( D ) class Person {

public string name; public string sex; private int age; double weight; }

(A)name sex (B)age (C)weight (D)age weight 4. 类的属性中,能够修改字段值的代码块是( B ) (A)get代码块 (B)set代码块 (C)find代码块 (D)modification代码块 5. 下列类定义代码,当用来声明对象car,并用Car car = new Car(); 实例化后,可以通过car对象直接赋值的字段是( D )。 public class Car {

public string type; string No;

第 34 页 共 88 页

private int heavy; double speed;

protected string owner; public string price; private string color; }

(A)type No (B)heavy owner (C)type owner price (D)type price 6.在C#中,( C )访问修饰符修饰的类成员只能由当前程序集访问。 a) public b) protected c) internal d) private

7.在类作用域中能够通过直接使用该类的( )成员名进行访问。

A. 私有 B. 公用 C. 保护 D. 任何 答案:D

8.类的以下特性中,可以用于方便地重用已有的代码和数据的是( ).

A.多态 B.封装 C.继承 D.抽象 答案:C

9. 在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成____?(C)

A.sealed 方法 B.public 方法 C.virtual 方法 D.override 方法

10. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为( D )。

A. x(a) B. x[a] C. x->a D. x.a

11. 假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为( B )。

A. x.a B. x.a() C. x->a D. x->a()

12. 假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为( C )。

A. px(a) B. px[a] C. px->a D. px.a

13. 假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D )。 A. x.a B. x.a() C. x->GetValue() D. x.GetValue()

14. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( A )。

A. int AA::a() B. int AA:a() C. AA::a() D. AA::int a()

15. 假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为( A )。

A. a B. AA::a C. a() D. AA::a()

第 35 页 共 88 页

二、选择填空题

1.面向对象的程序设计允许用 I 或对象的思想方法来分析和设计应用程序,从而使软件开发过程更接近人类的思维过程。

2. 当应用程序通过类创建一个对象时,用户只要使用对象的 B 和方法进行相应的操作,而不必关心其内部是如何实现的,这样就有助于实现程序结构的模块化和代码重用。

3. 如果访问修饰符使用 A ,则将类的访问类型指定为公共的,被声明的类可以在其它的项目中使用。

4. 类的属性通常属性包括 D 访问或修改字段的值。

5. 类的成员包括 J 和方法成员,使用属性可以实现对数据成员的良好封装。 备选项:

(A)public (B)属性(property) (C)private (D)get代码块和set代码块 (E)类(class) (F)框架 (G)find代码块和modification代码块 (H)对象成员 (I)实体 (J)数据成员

6、面向对象的语言具有___封装 性、_____继承_____性、____多态______性。

7.在C#中,在实例化类对象时,系统自动调用该类的__构造函数____进行初始化。 8.在C#中,当一个对象离开它的作用域或不再被使用时,系统将会自动调用类的___析构函数___。

9、在C#中,类的静态成员属于___类______所有,非静态成员属于类的实例所有。 10一般将类的构造方法声明为__ public或公有_____ 访问权限。如果声明为private,

就不能创建该类的对象。

三.简答题:

1. 简述 private、 protected、 public修饰符的访问权限。 private : 私有成员, 在类的内部才可以访问。

protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 2. C#中的接口和类有什么异同。

抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。

但接口是一个行为的规范,里面的所有东西都是抽象的!

一个类只可以继承一个基类也就是父类,但可以实现多个接口。 3. 面向对象的思想主要包括什么?

封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。

继承:子类拥有父类的所有数据和操作。

多态:一个程序中同名的不同方法共存的情况。

第 36 页 共 88 页