考试试卷 A(xin)面向对象程序设计
- 格式:doc
- 大小:88.00 KB
- 文档页数:14
《面向对象程序设计》试卷A答案及评分标准本试卷共10个题,分别按以下标准评分,最后根据整个答题的情况,从程序设计风格的角度给予0-5分的附加分。
1、编写程序,将从键盘读入的所有大小写字母写入名为a.txt的文件中(遇EOF结束)。
(本题总分10分,fopen函数使用妥当4分,读入过程正确4分,关闭文件2分。
程序结构完整,有不妥之处,酌情扣分。
)#include <stdio.h>main ( ){FILE *fptr;fptr = fopen("a.txt","w");if (fptr==NULL)return 0;char a;a=getchar( );while(a!=EOF ){if(a>=’a’ && a<=’z’|| a>=’A’ && a<=’Z’) fputc(a,fptr);a = getchar();}fclose(fptr);return 0;}2、定义一个矩形类Rectangle,并在main函数中用它声明一个矩形对象,然后利用接口设置该矩形对象的长和宽、计算面积并输出。
(本题总分10分,类结构2分,设置矩阵对象的长与高各1分,计算面积函数2分,输出函数2分,主函数2分。
程序结构完整,有不妥之处,酌情扣分。
)#include <stdio.h>#include <iostream.h>class Rectangle{public:int getArea();void setWidth(int w);void setLength(int l);private:int Length;int Width;};int Rectangle::getArea(){return Length*Width;}void Rectangle::setLength(int l){Length=l;}void Rectangle::setWidth(int w){Width=w;}main(){int len,wid;Rectangle r1;cout<<"Input the Rectangle's Information"<<endl;cout<<"Lentgh:"<<endl;cin>>len;cout<<"Width:"<<endl;cin>>wid;r1.setLength(len);r1.setWidth(wid);cout<<"Rectangle's Area:"<<r1.getArea()<<endl;return 0;}3、定义一个整数栈类IStack,并用该类声明一个整数栈对象istack,往该对象压入整数6、7、8,然后逐一弹栈输出。
《面向对象程序设计》试卷(A)卷一、选择题(本题共40分,每小题2分)1.()不是面向对象语言的三要素。
A. 封装B. 继承C. 类D. 多态2.下面关于对象概念的描述中,()是错误的。
A.对象就是C语言中的结构变量B.对象代表着正在创建的系统中的一个实体C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的3.下面关于类概念的描述中,()是错误的。
A.类是抽象数据类型的实现B.类是具有共同行为的若干对象的统一描述体C.类是创建对象的样板D.类就是C语言中的结构类型4.下列的各类函数中,()不是类的成员函数。
A. 构造函数B. 析构函数 C . 友元函数 D. 拷贝初始化构造函数5.()不是构造函数的特征A.构造函数的函数名与类名相同B.构造函数可以重载C .构造函数可以设置缺省参数 D.构造函数必须指定类型说明6.下述静态数据成员的特征中,()是错误的。
A.说明静态数据成员时前边要加修饰符staticB.静态数据成员要在类体外进行初始化C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符D.静态数据成员不是所有对象所共用的7.下面对于友元函数描述正确的是()。
A.友元函数的实现必须在类的内部定义B.友元函数是类的成员C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员8.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该当成员的访问权限定义为()。
A.publicB.protectedC.privateD.static9.假设OneClass为一个类,则该类的拷贝初始化构造函数的声明语句为()。
A.OneClass(OneClass p)B.OneClass& (OneClass p)C.OneClass(OneClass & p)D.OneClass (OneClass *p)10.已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。
卷号:(A ) (2011年7月)期末考试试卷 面向对象程序设计(C++)考试范围 全部章节 命题人院系 考试形式 闭卷 课程类别 必修 学 期 专业一、单项选择题(本题共10小题,每小题2分,共20分) 1.以下叙述中不正确的是_________。
A. 在类定义中,通常使用成员变量描述对象的属性,用成员函数描述对象的行为B. 当使用公有继承时,派生类可以访问基类的非私有成员C. 构造函数和析构函数是特殊的成员函数, 因此不允许重载D. 通过对象只能访问类的公有成员2.在下列关键字中,用于说明类中公有成员的是__________。
A. public B. private C. protected D. friend 3.下列的各类函数中,__________不是类的成员函数。
A. 构造函数B. 析构函数C. 友元函数D.拷贝初始化函数 4.作用域运算符的功能是__________。
A. 标志作用域的级别B. 指出作用域的范围C. 给定作用域的大小D. 标志某个成员是属于哪个类的 5.__________不是构造函数的特征。
A. 构造函数的函数名同类名B. 构造函数可以重载C. 构造函数可以设置缺省参数D. 构造函数必须指定类型 6.__________是析构函数的特征。
A. 一个类中只能定义一个析构函数B. 析构函数名与类名不同C. 析构函数的定义只能在类体内D. 析构函数可以有一个或多个参数 7.假定A 为一个类,则执行 “A a(1,5);”语句时将自动调用该类的_________。
A. 带参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数 8.a=2,b=3,表达式:(a+b)?a :b 的值为__________。
A. 0 B. 2 C. 3 D. 5 9.关于成员函数特征的下属描述中,__________是错误的。
A. 成员函数一定是内联函数 B. 成员函数可以重载 C. 成员函数可以设置参数的缺省值 D. 成员函数可以是静态的 10.友元的作用__________。
面向对象程序设计试卷及答案.)答案考试试卷A(面向对象程序设计注意事项:请考生按要求在试卷装订线内填写姓名、学号1.和年级专业。
请仔细阅读各种题目的回答要求,在规定的位2.置填写答案。
不要在试卷上乱写乱画,不要在装订线内填写3.无关的内容。
分钟。
100分,考试时间为1204. 满统分得单项选择一.分分,共小题,每小题3(本大题共10 评分) 30分人) B 中每个int类型的变量占用(1. C# 个字节的内存。
)C (( B)4 8 (A)1 )(D 2) A 2. 面向对象的特点是(态装封、继承、多(A)(B)抽象、封装、多态封继承、(C )抽装象、)抽象、多态、重载(D 3. C#控制台程序的主入口点是() C)C Run Page_Load(A)函数(B)函数( Main函数函数)(DForm_Load引用类型存储在()中。
B 4.))(堆内存B 堆栈)(A () C队列D (列表表示一个字符串的变量应使用以下哪在5. C#中,)B 条语句定义(.(A)CString str (B)string str(C)Dim str as string (D)char*str6.在中,用来与数据源建立连接的对象是( A )。
(A)Connection对象(B)Command 对象(C)DataAdapter对象(D)DataSet 对象7. 在类的定义中,类的( B )描述了该类的对象的行为特征。
(A)类名(B)方法(C)所属的名字空间(D)私有域8. 如果未显式赋值,则将整型值( B )赋给枚举中的第一个元素。
(A)1 (B)0 (C)23)(D)类型类型的值可以隐式转换成(9. float C的值而保持值不被改变。
double )C( long )B( char )A(int )D(是IExample而,是一个类Class1假设,中在C#10.A 下面的(,一个接口)类声明是正确的。
class Employee: Class1, IExample )A(.class Employee: IExample, Class1 B)(class Employee- Class1, IExample )(Cclass Employee: Class1/IExample )(D得.判断题二分15共每小题小题,3分,(本大题共5 评)分分中子类可以继承多个基类,也可以1. C人)×继承一个接口。
课程面向对象程序设计考试形式(闭卷,考试)一.判断题(正确的叙述打“√”,错误的叙述打“×”,每题1分共10分)1.在C++中,所有运算符均可重载。
(×)2.面向对象程序设计的三大特征是:封装、继承和多态。
(√)3.函数原型:f(int *&p);中的形参p是对指针变量的引用。
(√)4.一个类的常数据成员对该类的所有对象来说,其值都是相同的。
(×)5.类的友元函数、构造函数和析构函数均属于类的成员函数。
(×)6.类的静态成员函数只能直接引用该类中说明的静态成员。
(√)7.子类的对象可以赋值给基类对象,通过这个基类对象可访问到子类新增加的成员。
(×)8.C++ 类族中,构造函数和析构函数不能被派生类继承。
(√)9.在一个类族中,构造函数不能定义为虚函数,但析构函数可以定义为虚函数。
(√)10.若类A是类B的友元,类B是类C的友元,则类A是类C的友元。
(×)二.填空题(每格1分共14 分)1.C++中的数据类型bool型的值域是:{false,true}。
2.在已经定义了整型指针变量ip后,为了动态得到一个存储20个int型数的存储空间并由ip所指向,应使用语句: ip=new int[20] ;释放这些存储空间应使用语句:delete []ip;。
3.假定classA为一个类,则执行“classA a1[15],a2[25];”语句时,系统自动调用该类的构造函数的总次数为:40。
4.在C++中不使用宏替换去定义符号常量Pai的值为3.14159可使用语句:const float Pai=3.14159;5.已知fun()的函数原型为:int fun(float);现要定义一个指向该函数的指针变量pf,则pf的定义语句为:int(*pf)(float)=&fun;6.设函数 max 是由函数模板实现的,并且 max(3.5,5,8) 和 max(10,14.3,5)都是正确的函数调用,则该函数模板具有 3 个类型参数。
面向对象程序设计试卷一、选择题(每题2分,共20分)1. 面向对象程序设计中的三大特征是:A. 封装、继承、多态B. 抽象、封装、继承C. 封装、继承、封装D. 继承、多态、封装2. 下列哪个不是面向对象程序设计的优点?A. 代码重用B. 易于维护C. 程序复杂度低D. 可扩展性好3. 在Java中,哪个关键字用于定义类?A. classB. structC. interfaceD. type4. 以下哪个是Java中不允许的类名?A. MyClassB. 2MyClassC. MyClass2D. MyClass_5. 在面向对象程序设计中,以下哪个概念不是用于实现封装?A. 私有成员B. 公有方法C. 访问控制D. 继承6. 下列哪个不是Java的访问控制修饰符?A. publicB. privateC. protectedD. global7. 以下哪个是Java中不允许的方法名?A. myMethodB. _myMethodC. my_methodD. myMethod_8. 在Java中,哪个关键字用于实现继承?A. extendsB. inheritC. deriveD. base9. 以下哪个不是Java的多态性实现方式?A. 接口B. 抽象类C. 重载D. 重写10. 在Java中,哪个关键字用于定义接口?A. interfaceB. protocolC. abstractD. type二、简答题(每题10分,共30分)1. 简述面向对象程序设计中封装的概念,并给出一个封装的简单示例。
2. 解释什么是多态性,并说明多态性在面向对象程序设计中的重要性。
3. 描述继承在面向对象程序设计中的作用,并举例说明如何使用继承来提高代码的复用性。
三、编程题(每题25分,共50分)1. 定义一个名为`Student`的类,包含以下属性:- 姓名(String类型)- 学号(String类型)- 年龄(int类型)并为该类实现以下方法:- 一个构造函数,用于初始化姓名、学号和年龄。
面向对象程序设计考试(答案见尾页)一、选择题1. 面向对象程序设计(OOP)的基本概念是什么?A. 类和实例B. 过程和函数C. 数据结构和算法D. 对象和封装2. 在面向对象程序设计中,什么是封装?A. 将数据隐藏在对象内部B. 提供统一的接口C. 包含数据和处理数据的函数D. 以上所有3. 在面向对象编程中,什么是继承?A. 重用已有的代码B. 创建新的类C. 在现有类的基础上添加新特性D. 以上所有4. 面向对象编程中的“继承”与“多态”有什么不同?A. 继承允许我们定义新的类,多态允许我们使用父类的接口处理不同的对象B. 继承是创建新类的过程,多态是使用父类接口处理不同对象的行为C. 继承是基于已有的类创建新类,多态是同一接口处理不同对象D. 继承是代码重用,多态是接口一致但实现不同5. 在面向对象编程中,什么是多态?A. 不同的对象对同一消息作出响应B. 同一个接口可以被不同的对象以不同的方式实现C. 对象的属性都是相同的类型D. 对象的状态可以改变6. 面向对象编程中,什么是抽象类?A. 包含抽象方法的类B. 包含常量的类C. 包含事件的类D. 以上所有7. 在面向对象编程中,什么是局部变量?A. 在方法内部定义的变量B. 在类内部定义的变量C. 在对象内部定义的变量D. 在包内部定义的变量8. 面向对象编程中,什么是静态方法?A. 使用静态修饰符定义的方法B. 不依赖于任何对象的方法C. 通过类名调用的方法D. 以上所有9. 在面向对象编程中,什么是构造函数?A. 初始化对象的函数B. 定义对象状态的方法C. 没有参数的方法D. 以上所有10. 面向对象编程中,什么是析构函数?A. 销毁对象并释放资源的方法B. 定义对象行为的方法C. 没有返回值的方法D. 以上所有11. 在面向对象程序设计中,什么是类和对象?它们的关系是什么?A. 类是一种抽象的数据类型,而对象是类的实例。
B. 类是用来描述具有相同属性和行为的对象的集合,对象是类的实例。
课程名称: 面向对象程序设计 ( A 卷 闭卷) 适用专业年级:计算机科学与技术08级 考试时间: 100分钟题号 一 二 三 四 五 六 七 八 九 十 总分统分人 签名题分 10 24 10 26 10 20 100得分考生注意事项:1、本试卷共 3 页,试卷如有缺页或破损,请立即举手报告以便更换。
2、考试结束后,考生不得将试卷、答题纸和草稿纸带出考场。
(答案请写在密封线内和答卷正面,否则不记分)一、判断题,正确的打√,错误的打×(每小题1分,共10分)1.C++语言是在C 语言基础上扩充了函数功能而得来的。
( × )2.在C++语言中,使用struct (结构体)定义的类与使用class 定义的类是一样的。
( × ) 3.每个对象也有地址,该地址就是存储此对象数据成员的单元的首地址。
( √ )4.如果在一个类的对象之间要进行数据交换,可以使用该类的静态数据成员来完成。
( √ )5.在声明一个类时,必须同时声明类的数据成员和成员函数。
( × )6.设函数fun( )是一个不属于任何类的普通函数,则在调用该函数时只能用fun()方式,而不能用::fun()方式来调用。
( × ) 7.类的构造函数和析构函数一般都声明为虚函数。
( × )8.设Time 是一个类,现有指针p 的定义语句:const Time *p ;则通过指针p 不可以修改Time 类对象的公有数据成员。
( √ )9.使用MFC 编程时,OnDraw 函数是CView 类的成员函数。
( √ )10.在VC6.0开发环境中,对导入的所有位图资源都可以进行修改。
( × ) 二、简答题(每小题8分,共24分) 1.简述类和对象的含义。
面向对象程序设计和面向过程程序设计的主要区别是什么?2.什么是友元函数?友元函数的作用是什么? 3.函数重载的主要作用是什么?函数重载时参数个数不同时,能否有缺省参数,为什么?三、填空题(每空2分,共10分)1.根据程序说明和程序中的注释,填充程序中不完整的部分。
贵州大学2011-2012学年第二学期考试试卷 A《面向对象程序设计》注意事项:1. 请考生按要求在试卷装订线内填写姓名、学号和年级专业。
2. 请仔细阅读各种题目的回答要求,在规定的位置填写答案。
3. 不要在试卷上乱写乱画,不要在装订线内填写无关的内容。
4. 满分100分,考试时间为120分钟。
题 号 一二三四五六总 分统分人得 分一、填空(共10分,每空1分)1、含有 的类叫做抽象类。
2、在类的继承中,原有的类称为父类或 ,产生的新类称为子类或 。
3、无论采用哪种继承方式,父类的 成员在子类中都不可直接访问。
4、绑定工作在程序运行阶段完成的情况称为 。
5、 是一个隐含于类的非静态成员函数中的特殊指针,它用于指向正在被成员函数操作的对象。
6、 若类A 是类B 的友元类,则类A 的所有成员函数都是类B 的 。
7、 是一种特殊类型的变量,可以被认为是另一个变量的别名。
8、定义名字空间的关键字 。
9、在C++的异常处理中,用于抛掷异常的关键字是 。
得 分 评分人二、单项选择(共30分,每小题2分)1.C++语言是从早期的C 语言逐渐发展演变而来的.与C 语言相比,它在求解问题方法上进行的最大改进是( )。
A.面向过程B.面向对象C.安全性D.复用性2. C++中能声明常量的关键字是( )。
A. const B. extern C. public D. enum3. 对于类中定义的成员,其隐含访问权限为( )。
A .publicB .protectedC .privateD .static4. 定义析构函数时,应该注意( )。
A.其名与类名完全相同B.返回类型是 void 类型C.无形参,也不可重载D.函数体中必须有 delete 语句5.下面有关重载函数的说法中正确的是( ) 。
A.重载函数必须具有不同的返回值类型;B.重载函数形参个数必须不同;C.重载函数必须有不同的形参列表D.重载函数名可以不同;6.下列关于构造函数的描述中,错误的是( ) 。
A.构造函数可以设置默认参数;B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数;D.构造函数不可以重载7.下面描述中,表达错误的是( )。
A.公有继承时基类中的public 成员在派生类中仍是public 的B.公有继承时基类中的private 成员在派生类内部可以直接访问的C.公有继承时基类中的protected 成员在派生类中仍是protected 的D.私有继承时基类中的public 成员在派生类中是private 的8.应在下列程序划线处填入的正确语句是( )。
class Base {public:void fun() {cout<<"Base::fun"<<ENDL;}};得 分 评分人class Derived:public Base{void fun(){_____________//显示调用基类的函数fun()cout<<"Derived::fun"<<ENDL;}};A.fun();B.Base.fun();C.Base::fun();D. Base->fun();9. 有如下的对类“CSample”的说明,其中()是错误的。
class CSample {A.int a=23;B.CSample();public:C.CSample(int val);D.~ CSample();}10. 对于在类中定义的静态数据成员,下面正确的说法是()。
A.该类的每个对象中都有一个静态数据成员B.对象创建时产生C.在类外进行初始化D.既可以在类外初始化,也可以在类内初始化11. 下面关于友元的描述中,错误的是()。
A.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元不是必须使用,则尽可能少用。
D.类与类之间的友元关系可以继承12. 已知:int m=10; 下列表示引用的方法中,()是正确的。
A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m;13. 在公用继承方式下,有关派生类对象和基类对象关系,不正确的叙述是()。
A.派生类的对象可以赋给基类的对象B.派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员D.派生类的对象的地址可以赋给指向基类的指针14. 在C++中,用于实现动态多态性的是( )。
A .内联函数 B .重载函数 C .模板函数 D .虚函数15. 设置虚基类的目的是( )。
A .简化程序B .消除二义性C .提高运行效率D .减少目标代码三、判断题(共10分,每小题1分)(对的打√,错的打╳)1. 友元函数用于允许一个函数访问不相关类的私有部分。
2. 构造函数可以被继承。
3. 动态绑定的多态性是通过虚函数实现的。
4. 在c++中,传引用调用等同于传地址调用。
5. 重载函数必须有不同的参数列表。
6. 可以用delete 释放不是用new 运算符分配的内存。
7. 类成员的默认访问模式是private 。
8. 在类Time 中的析构函数可以声明为:void ~Time(int); 9. const 对象必须初始化。
10. 在c++中,只能重载已有的运算符。
四、程序填空(共10分,每空2分)#include <iostream> using namespace std;得 分 评分人得 分 评分人class A {____________ (1) char name[80]; public: A( __________ ) (2){__________ }(3)};class B____________ (4) {public: B(const char*n)____________ { } (5) void PrintName( ) {cout<<”name:”<<name<<endl;} };int main( ) { B b1(“Ling Li ”); b1.PrintName( ) ; return 0;} // 执行结果: name: Ling Li五、程序分析题(共20分,每小题5分)1. 给出下面程序的运行结果: #include<iostream> #include<string> using namespace std;class Student{ private:string no;static int stuNum; public:Student(string no) { this->no=no; Student::stuNum++;得 分 评分人}static int GetStuNum(){return stuNum;}};int Student::stuNum=0;void main(){Student stu1("201208001");Student stu2("201208002");cout<<Student::GetStuNum();}2. 给出下面程序的运行结果:#include<iostream>using namespace std;class Parent{public:Parent(){ cout<<"执行基类构造函数!"<<endl; } ~Parent(){ cout<<"执行基类析构函数!"<<endl; } };class Son:private Parent{public:Son(){cout<<"执行派生类构造函数!"<<endl; } ~Son(){cout<<"执行派生类析构函数!"<<endl; } };void main() { Son son; }3. 给出下面程序的运行结果:#include<iostream>using namespace std;class Parent{private: int a;public:Parent(int a){ this->a=a; }void Print(){ cout<<a<<endl; } };class Son:public Parent{ int b;public:Son(int a):Parent(a-1){ b=a; }void Print(){ cout<<b; } };void main(){Parent *p=new Son(10);p->Print();Son son(20);son.Print();}4. 给出下面程序的运行结果:#include<iostream>using namespace std;class Operation {protected:int numberA,numberB; public:void SetValue(int numberA,int numberB) { this->numberA=numberA; this->numberB=numberB; }virtual int GetResult()=0; };class Add:public Operation {int GetResult() {return numberA+numberB; } };class Sub:public Operation {int GetResult() { return numberA-numberB; } };void main() {Operation *opr; int result;opr=new Add(); opr->SetValue(1,2); result=opr->GetResult(); cout<<result; }六、编程题(共20分,每小题10分)1、定义一个抽象类Shape ,并在此基础上派生出Square (正方形)和得 分 评分人EquilateralTriangle(等边三角形)类。
二个派生类需要实现Shape中的calculateArea ( )函数和calculatePerim( )函数用于计算具体图形的面积和周长。
最后在main()函数中对相关类进行测试。