安徽机电职业技术学院2007–2008学年第一学期
《面向对象程序设计(C#)》期终考试试卷(A卷)
班级: ____________ 姓名:____________ 学号:_______________
一、填空题(每空2分,共20分)
1、在本门课程的学习过程中,我们使用的 Framework的版本是 1.1 。
2、作为一个可以独立运行的C#程序,该类中必须有一个 Main 方法。
3、MessageBox文昌帝类的Show方法的作用是:___显示消息框_。
4、请写出关闭当前窗体的语句:_ this.Clo()__________________________。
5、请写出求圆柱体的体积的C#表达式(设各变量均已经正确定义为合适的类型):v=Math.PI*r*r*h 。
6、编译器是通过不同方法的签名来识别不同的重载方法的。方法的签名包括方法名、参数的个数、类型 和顺序。
7、类的构造函数会在_实例化对象__时执行。
8、C#语言中,类的多态性的实现,可以通过 虚方法__、抽象方法和接口来实现。
9、使用StreamReader类的 ReadToEnd 方法可以将文本文件全部内容读取到内存中(参看右图)。
10、使用ADO连接Access数据库,需要至少引入哪些命名空间:
using System.Data;
using _ System.Data.OleDB _______;
二、选择题(每题1分,共10分)
( B )1、C#语言是以__________为单位来组织代码的。
A.命名空间 B.类 C.函数 D.文件
( C )2、下面哪一种注释符号是C#语言特有XML注释:
A. /* …… */ B. // C. /// D. '
( D )3、下面哪种扩展名的文件是存放源程序代码的文件:
A. .sln B. .aspx C. .csproj D. .cs
( C )4、如果要定义一个变量principal,它用来表示贷款的本金。那么,该变量定义为______类型比较适宜。
A. float B. double C. decimal D. string
( C )5、声明为 的基类成员,仅可在基类和它的派生类的方法中访问。
A. public B. private C. protected D. internal
( C )6、下面所列是类的主要特性。 是软件复用的一种形式,在这个过程中吸收现有类的数据和行为,并为这些类添加新功能。
A. 抽象性 B. 封装性 C. 继承性 D. 多态性
( A )7、下面的类型中,哪种类型是引用类型:
A. object B. bool C. int D. char
( D )8、如果希望仅读取某个集合(数组)中的所有元素,对元素访问顺序不关心,那么,使用____循环比较适合。
A. for B. while C. do … while D. foreach
( B )9、在基类中,希望定义一个方法,该方法基类无法提供实现,但要求其派生类必须实现,该方法应该声明为______。
A. virtual B. abstract C. override D. aled
( B )10、下面哪一个连接字符串可以用于在C#语言中连接当前目录下的Access数据库Score.mdb:
A. rver=127.0.0.1;databa=score.mdb;uid=jsj,pwd=123
B. Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Score.mdb
C. Provider=sqloledb;Data Source=Aron1; Initial Catalog=pubs; Ur Id=jsj; Password=123
D. Data Source=local;Initial Catalog=Score.mdb;Integrated Security=SSPI
三、判断题。判断正误,正确的打√,错误的打×(每题1分,共敏感系数10分)
(1)C#是应用程序唯一可用的语言。 ( 错 )
(2)表达式上海一本(x<=y && y>4)的值在x=-5, y=4时为真。 ( 错 )
(3)如果for结构体内的语句多于一个,那么需要使用一对花括号来定义循环的结构体。 ( 对 )
(4)为确定定数组中元素的个数,可以调用数组的Length属性来确。 ( 对 )
(5)值类型变量存储在堆中,引用类型变量存储在栈中。 ( 错 )
(6)类的属性必须同时定义get访问器和t访问器。 ( 错 )
(7)派生类可以继承基类的数据成员和方法,但不能继承基类的构造函数。 ( 对 )
(8)类的静态成员通过类的实例来访问而不是通过类名来访问。 ( 错 )
(9)类的多态性允许程序员使用基类的引用管理它的派生类。 ( 对 )
(10)ADO中的Command对象使用SQL语句来对数据库进行操作。( 对 )
三、请设计一个身体质量指数的计算程序,界面如右图所示。输入身高的文本框名为txtHeight, 输入体重的文本框名称txtWeight。单击开始计算的按钮后,计算出BMI指数的值并显示。显示BMI指数的文本框为txtBMI。BMI指数的计算公式为BMI=w/h2 , 这里w表示体重(kg),h表示身高(m)。(10分)
private void btnCaculate_Click(object nder, System.EventArgs e)
{ double height = double.Par(txtHeight.Text);
double weight = double.Par(txtWeight.Text);
double BMI = weight / (height*height);
txtBMI.Text = BMI.ToString();
}
四、请定义一个方法Sum,该方法用于求出score数组中所有元素的和并作为方法的返回值返回。(6分)
public int Sum( int[ ] score)
{
int total = 0;
foreach (int i in score)
{
total += i;
}
return total;
}
}
五、请定义一个狮子类Lion:(10分)
(1)该类中定义有4个数据成员:gender(性别,string型),name(名字, string型),age(年龄,int礼仪故事型),weight(体重,double型);
(2)定义1个公开的属性Age,它对字段age的封装,并且年龄只能取值为0~30;(其它属性的定义略)
(3)定义1个构造函数,它有1个string型的参数,以使对象创建时,能按指定的性别(Male或Female)进行初始化。
public class Lion
{
private string gender;
private string name;
private int age;
private double weight;
public int Age
{ get { return this.age; }
t
{ if (value>=0 && value<=30) this. age = value; }
}
public Lion(string g)
{
if ( g=="Male" || g=="Female") der = g;
}
}
六、已知Point类定义如下所示。请以Point老板我爱你类为基类,定义派生类Rectangle(矩形):
(1)除具有左上角坐标X和Y以外,还具有长度Length和宽度Width;
(2)实现构造函数,能够根据传入的坐标x, y, 以及长h和宽y,对类对象初始化;
(3)重载基类的Area方法。(12分)
public class Rectangle : Point
{ private double height;
private double weight;
public Rectangle (int x, int y, double h, double w)
: ba(x, y)
{ this.height = height;
this.width = width;
}
public override double Area( )
{ return this.width * this.height;
}
}
七、请写出能够处理下面异常的代码。已知下列语句在使用时有可能会引发System.FormatException类型的异常。现希望能对此异常进行处理。当捕捉到该类异常时,能显示如图所示的消息框(使用MessageBox类的Show方法)。 (6分)
int n;
n=int.Par(textBox1.Text);
、try
{ n = int.Par(textBox1.Text);
}
catch ( System.FormatException )
{ MessageBox.Show(“Sorry, 你输入的不是数字!”);
}
八、程序填空:下面的程序代码用于从当前目录的Score.mdb数据库的“第4学期”表中的成绩数据显示到窗体的名为txtOutput1文本框(RichTextBox控件)中。“第4学期”表中有3列数据:学号、姓名、成绩。请将下列程序补充完整。 (8分)
(1) 、(1) EexcuteReader()
(2) dr.Read()
(3) dr["成绩"]
(4) conn.Clo()
(2)
(3)
(4)
九、学习了《面向对象程序设计春天的景象(C#)》这门课程后,请你结合自己的体会,谈一谈面向对象编程与面向过程编程的主要特点,你认为面向对象编程的核心知识有哪些?并请对本课程的教学提出宝贵意见。(8分)