…………试卷装订线 ……………… 装订线内不要答题,不要填写考生信息………………试卷装订线 ………… |
| 重点大学考试试卷(A卷) 2018 ~2019 学年 1 学期 面向对象程序设计课程 闭卷 时间120分钟, 学时, 学分,总分100分,占总评成绩100% 年 月 日
一、单选题(每小题2分,共20分,本题答案填入下表中) 1. 在C++中,下列语句,错误的是( )。 A. int a(3); B. int a[3]; C. int &a; D. int *a; 2. 派生类中的成员函数可以直接访问基类的( ) 。 A. 公有成员 B. 私有成员 C. 公有和保护成员 D. 保护成员 3. 在C++中,关于类的析构函数,正确的说法是( )。 A.能带形式参数 B.函数体中必须有 delete 语句 C.可以被重载 D.无形参,也不可重载 4. 一个类拥有多个构造函数,则这些构造函数之间为( )。 A.重复关系 B.拷贝关系 C.重载关系 D.继承关系 5. C++中声明常量的关键字是( )。 A.extern B.const C.public D.volatile 6. 一个函数功能不太复杂,但要求被频繁调用,该函数应该设计成( ) 。 A.内联函数 B.重载函数 C.递归函数 D.嵌套函数 7. 以下基类中的成员函数表示纯虚函数的是( )。 A. virtual void tt()=0; B. void tt(int)=0; C. virtual void tt(int); D. virtual void tt(int){} | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8. 可以在类外用p.a的形式访问派生类对象p的基类成员a,其中a是( )。 A.公有继承的公有成员; B.公有继承的私有成员; C.公有继承的保护成员; D.私有继承的公有成员。 9. 对于任意一个类,析构函数的个数最多为( ) A.0 B.1 C.2 D.3 10. 对于在类中定义的静态数据成员count,下面正确的说法是( ) A.count在类外进行初始化 B.该类的每个对象中都有一个独立的静态数据成员count C. 对象创建时产生count D.count既可以在类外初始化,也可以在类内初始化
二、改错题(共3小题,每小题6分,共18分) 1.下面的程序在VC6.0上编译提示error C2440: 'type cast' : cannot convert from 'class Complex' to 'float',No user-defined-conversion operator available that can perform this conversion,请指出错误原因并改正。 #include <iostream> using namespace std; class Complex{ public: Complex(float r=0,float i=0) {real=r; imag=i; } void print() {cout<<'('<<real<<','<<imag<<')'<<endl;} private: float real,imag; }; int main() { Complex a(2.2f, 4.4f); a.print(); cout<<float(a)*0.5<<endl; return 0; } | ||||||||||
2.下面的程序在VC6.0上编译提示error C2662: 'getX' : cannot convert 'this' pointer from 'const class CTest' to 'class CTest &',请指出错误原因并改正。 #include<iostream> using namespace std; class CTest {private: int x; public: CTest(int x) { this->x = x; } int getX() { return x; } }; int main() { const CTest obj(5); cout<&X()<<endl; return 0; } 3. 下面的程序在VC6.0上编译无错,运行结果出错:“p1:葺葺葺葺葺葺葺葺”,请指出错误原因并改正。 #include <iostream> #include<cstring> using namespace std; class STRING { public: STRING(char *s) { ptr=new char[strlen(s)+1]; strcpy(ptr,s); } ~STRING() { delete ptr; } void print() { cout<<ptr<<endl; } 编程递归函数private: char *ptr; }; | ||||||||||
int main() { STRING p1("book"); { STRING p2("pen"); p1=p2; } cout<<"p1:"; p1.print(); return 0; }
三、读程序,给出程序的输出结果。(每小题6分,共24分) 【1】#include <iostream> using namespace std; class Person{ public: Person() { cout<<"Constructor of Person"<<endl; } ~Person() { cout<<"Destructor of Person"<<endl; } }; class Student: public Person{ public: Student() { cout<<"Constructor of Student"<<endl; } ~Student() { cout<<"Destructor of Student"<<endl; } }; class Teacher: public Person{ public: Teacher() { cout<<"Constructor of Teacher"<<endl; } ~Teacher() { cout<<"Destructor of Teacher"<<endl; } }; int main(){ Student s; Teacher t; return 0; } | …………试卷装订线 ……………… 装订线内不要答题,不要填写考生信息………………试卷装订线 ………… | |||||||||
…………试卷装订线 ……………… 装订线内不要答题,不要填写考生信息………………试卷装订线 ………… | 【2】#include <iostream> using namespace std; class A { public: A (int i) { x = i; } void dispa () { cout << x << ","; } private : int x ; }; class B : public A { public: B(int i) : A(i+10) { x = i; } void dispb() { dispa(); cout << x << endl; } private : int x ; }; int main(){ B b(2); b.dispb(); return 0; } 【3】#include<iostream.h> class Count{ static int count ; public: Count( ) {cout<<count++ ;} static int Getc( ) { return count ;} ~Count( ) {count--;} }; int Count::count = 5; int main() { Count c1,c2,c3,c4 ; cout<<Count::Getc( )<<endl; return 0; } | |||||||||
【4】#include<iostream> using namespace std; class MyClass{ public: MyClass(int i=0){cout<<1;} MyClass(const MyClass&x){cout<<2;} MyClass& operator=(const MyClass&x){cout<<3; return *this;} ~MyClass(){cout<<4;} }; int main(){ MyClass obj1(1),obj2(2),obj3(obj1); obj1=obj2; return 0; }
四、编程题(共38分) 1.下面是一个类的测试程序,请设计出能使用如下测试程序的类。 (12分) int main() { Test a; a.init(68,55); a.print(); return 0; } 其执行结果为: 测试结果:68-55=13 | ||||||||||
…………试卷装订线 ……………… 装订线内不要答题,不要填写考生信息………………试卷装订线 ………… | 2.请为fraction类(分数类)定义下列重载运算符函数(注意函数原型)(12分) ⑴加法运算+。 ⑵赋值运算=。 ⑶提取运算>>。 class fraction { private: int fz; //分子 int fm; //分母 public: … }; | |||||||||
3.创建一个表示雇员信息的employee类,其中包含数据成员name、empNo和salary,分别表示雇员的姓名、编号和月薪。再从employee类派生出3个类worker、technician和salesman,分别代表普通工人、科研人员、销售人员。三个类中分别包含数据成员productNum、workHours和monthlysales,分别代表工人每月生产产品的数量、科研人员每月工作的时数和销售人员每月的销售额。要求各类中都包含成员函数pay,用来计算雇员的月薪,并假定: 普通工人的月薪=每月生产的产品数×每件产品的赢利×20% 科研人员的月薪=每月的工作时数×每小时工作的酬金 销售人员的月薪=月销售额×销售额提成。 (14分) | ||||||||||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论