浙江工业大学期终考试命题稿
2009 /2010 学年第 一 学期
课程名称 | C++程序设计Ⅱ | 使用班级 | 信息学院09级 |
教师份数 | 学生份数 | 500 | |
命题人 | 张健 | 审核人 | |
命题总页数 | 8页 | 每份试卷需用白纸 | 3 大张 |
命题注意事项:
一、命题稿请用A4纸电脑打印,或用教务处印刷的命题纸,并用黑墨水书写,保持字迹清晰,页码完整。
二、两份试题必须同等要求,卷面上不要注明A、B字样,由教务处抽定A、B卷。
三、命题稿必须经学院审核,并在考试前两周交教务处。
浙江工业大学2009/2010学年
第二学期期中试卷
课程 C++程序设计 Ⅱ 姓名___________________________
班级____________________________ 授课教师
题序 | 一 | 二 | 三 | 四 | 五 | 六 | 七 | 八 | 总评 |
计分 | |||||||||
试题一、选择题(每题1分,共10分) 1.下面是关于构造函数的说法,不正确的是( C )。 A. C++规定,每一个类必须有一个构造函数,没有构造函数就不能创建对象 B. 如果没有提供一个类的构造函数(一个都未提供),则C++提供一个默认的构造函数,该默认构造函数 是个无参构造函数,它仅仅负责创建对象 C. 虽然一个类定义了一个构造函数(不一定是无参构造函数),C++仍然提供默认的构造函数 D. 与变量定义类似,在用默认构造函数创建对象时,如果创建的是全局对象或静态对象,则对象的位模式全为0,否则,对象值是随机的 2.声明类test的复制构造函数的正确形式是( D )。 A. int test B. void test C. test(void) D. test(test&) 3.一个const对象( B )。 A. 能访问所有成员函数 B. 只能访问const成员函数 C. 也能访问普通的成员函数 D. 能访问const和普通的成员函数 4.下面关于类的对象性质的描述,正确的是( D )。 A. 对象之间不可以相互赋值 B. 不可以说明指向对象的指针 C. 对象不能用作数组元素 D. 一个对象能用作另一个对象的成员 5.下列有关内联函数的叙述中,正确的是( C )。 A. 内联函数在调用时发生控制转移 B. 内联函数必须通过关键字inline 来定义 C. 内联函数是通过编译器来实现的 D 内联函数体的最后一条语句必须是rennin 语句 6.下列情况中,不会调用拷贝构造函数的是( B )。 A. 用一个对象去初始化同一类的另一个新对象时 B. 将类的一个对象赋予该类的另一个对象时 C. 函数的形参是类的对象,调用函数进行形参和实参结合时 D. 函数的返回值是类的对象,函数执行返回调用时 7. C++源程序文件的扩展名为( A ) A. .CPP B. C C. .DLL D. .EXE 8. 编译程序的功能是( C ) A. 将汇编语言程序转换为目标程序 B. 将汇编语言程序转换为高级语言程序 C. 将高级语言程序转换为目标程序 D. 将高级语言程序转换为汇编语言程序 9.下面的函数声明中, 哪一个是” void BC(int a, int b);”的重载函数? ( B ) A. int BC(int a, int b) B. void BC(int a, char b) C. float BC(int a, int b, int c = 0) D. void BC(int a, int b=0) 10. 对于int *pa[5]的描述,( D )是正确的。 A. pa是一个指向数组的指针,所指向的数组是5个int型元素 B. pa是一个指向某数组中的第5个元素的指针,该元素是int型变量 C. pa[5]表示某个数组的第5个元素的值 D. pa是一个具有5个元素的指针数组,每个元素是一个int型指针 试题二、填空题(每空1 分,共20 分) 1. 在C语言中,编程的单位是 ;在C++语言中,编程的单位是 。 2. 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的 ,共同行为被描述为类中的 。 3. 类的具体表现是通过定义_______来操作的。 4. 对类中的成员函数和属性的访问是通过 、 和 这3 个关键字来控制的。 5. 一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为 权 限,而把成员函数(方法)定义为 权限。 6. 在类定义中,数据和成员函数默认权限是_________。 7. 类中构造函数有 个,析构函数有 个。 8. 类中的构造函数是一个特殊的成员函数,它由类的对象 调用,它的作用 是 。 9. 在定义类的对象时,C++程序将自动调用该对象的_____ _函数初始化对象自身。 10. 在撤销类的对象时,C++程序将自动调用该对象的___ ___函数。 11. 运算符对指定类型对象动态分配内存并返回 。 12. ________运算符删除(11)题中的运算符所动态分配的内存空间。 13. 假定用户没有给一个名为MyClass的类定义构造函数,则系统为其定义的默认构造 函数形式为______。 14. 假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构 函数形式为______。 15. 在类中定义和实现的函数称为________。 16. 非成员函数应声明为类的________才能访问这个类的private成员。 17. 若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入 语句________。 18. 若要把函数void FriendFunction()定义为类MyClass的友元函数,则应在类MyClass 的定义中加入语句_______。 19. 下面的类中定义了一个关于星期的枚举类型,请完成下面的程序。 class MyClass { public: enum Week {Sun,Mon,Tue,Wed,Thur,Fri,Sat }; Week week; } void fun(MyClass &my) { = ; //将对象my的week赋值为所定义的枚举类型 //值为3的枚举量 } 20. 在下面程序的横线处填上适当的语句,使该程序执行结果为10。 #include <iostream.h> class MyClass { public: //为x置值 //取x值 private: int x; }; void main() { MyClass my(10); cout << my.GetNum() << endl; } 1 函数 类 2 数据成员 成员函数 3 成员函数 4 private public protect 5 private public 6 private 7 1个或者N个,1个 8 生成时,初始化 9 构造函数 10 析构函数 11 new,true或者false 12 delete 13 MyClass(){}; 14 ~MyClass(){}; 15 内联函数 16 friend 17 friend class Myclass ; 18 friend FriendFunction() 19 my.Week=Wed; 20 MyClass(int x){this.x=x;}; // 设置x为10 ,int GetNum(){return x;};//返回X 试题三、程序填空题(每空1 分,共10 分) 【程序说明】下列程序的输出结果是42,请将画线处缺失的部分补充完整买。 #include<iostream> using namespace std; class Foo{ int value; public: Foo(){} void setValue(int Value) { } value =Value void print() {cout<<value<<endl;} }; int main() { Foo f; f.setValue(42); f.print(); return 0; } 2.【程序说明】完成下面的类定义。 Class MyClass { Public: MyClass(){x=0;} Int GetNum( my); friend MyClass Private: Int x; }; Int GetNum( my) MyClass { Return my.x; } 3.【程序说明】下面程序在构造函数和析构函数中申请和释放类的私有成员,请完成该类的实现。 #include <iostream> using namespace std; class MyClass { public: MyClass(int a); ~MyClass(); private: int *X; }; MyClass::MyClass(int a) { //X=new int(a); } MyClass::~MyClass() { // delete X; } void main() { MyClass myclass(2); } 4. 【程序说明】下列程序通过把类Distance定义为类Point的友元类来实现计算两点之间距离的功能,请完成该程序。 #include <iostream> #include <cmath> using namespace std; class Point { public: friend class Distance; Point( ) float a=0,float b=0 { X=a; Y=b; } void Print() { cout<<"X="<<X<<endl; cout<<"Y="<<Y<<endl; } private: float X,Y; }; class Distance { public: float Dis(Point &p,Point &q); }; float Distance::Dis(Point &p,Point &q) { float result; result=sqrt((p.X-q.X)*(p.X-q.X)+(p.Y-q.Y)*(p.Y-q.Y)); cout<<result<<endl; return result; } void main() { Point p(10,10),q(20,20); Distance d; d.Dis(p,q); } 试题四、程序阅读题(每题5分,共20分) 程序1( ) #include<iostream.h> void swap (int x,int &y); void main() { int a(10),b; b=a/2; cout<<"a="<<a<<","<<"b="<<b<<endl; swap(a,b); cout<<"a="<<a<<","<<"b="<<b<<endl; enum函数} void swap (int x,int &y) { int temp=x; x=y; y=temp; } 2. 程序2( ) #include<iostream> using namespace std; class Counter { int v; public: Counter(){ v=0; } Counter& preAddOne(); Counter postAddOne(); void print(){ cout<<v<<”\n”; } }; Counter& Counter::preAddOne(){ v++; return *this; } Counter Counter::postAddOne(){ Counter temp; temp.v = v++; return temp; } int main() { Counter c; for(int i=0; i<8; i++) c.postAddOne().postAddOne(); c.print(); for(int j=0; j<8; j++) c.preAddOne().preAddOne(); c.print(); } 3. 程序3( ) #include<iostream.h> class Obj{ int val; public: Obj() { val=0; cout<<val<<'\t'<<"调用Obj缺省的构造函数!\n"; } Obj(int i) { val=i; cout<<val<<'\t'<<"调用Obj的构造函数!\n"; } ~Obj() {cout<<"调用Obj的析构函数!\n";} }; class Con{ Obj one,two; int data; public: Con() { data=0; cout<<data<<'\t'<<"调用Con缺省的构造函数!\n"; } Con(int i,int j,int k):two(i+j),one(k) { data=i; cout<<data<<'\t'<<"调用Con 的构造函数!\n"; } ~Con() { cout<<"调用Con的析构函数!\n"; } }; void main(void) {Con c(100,200,400);} 4. 程序4( ) #include<iostream> using namespace std; class Point { public: Point(int xx=0,int yy=0){X=xx;Y=yy;} int GetX(){return X;} int GetY(){return Y;} private: int X,Y; }; class Rectangle { public: Rectangle(Point xp1,Point xp2); float Getarea(){return area;} private: Point p1,p2; float area; }; Rectangle::Rectangle(Point xp1,Point xp2):p1(xp1),p2(xp2) { float x=float(p1.GetX()-p2.GetX()); float y=float(p1.GetY()-p2.GetY()); area=x*y; } void main() { Point myp1(1,1),myp2(2,2); Rectangle rectangle(myp1,myp2); cout<<rectangle.Getarea()<<endl; } |
试题五、程序设计题(每题10分,共40分) 1. 定义一个Point类来处理三维点points(x,y,z).该类有一默认的constructor,一copy constructor, 一negate()成员函数将point的x,y和z值各乘-1, 一norm()成员函数返回该点到原点(0,0,0)的距离,一个print()成员函数显示x,y,和z的值。 2. 定义一个Person类,它的每个对象表示一个人。数据成员必须包含姓名、出生年份、死亡年份,一个默认的构造函数,一析构函数,读取数据的成员函数,一个print()成员函数显示所有数据。 3. 定义和实现类 Array。该类的成员函数GetData返回对一个数组元素的引用,成员函数Print调用成员函数GetData实现对该数组的打印。 4. 一个班有5名学生,每个学生修了5门课。完成:⑴求每个学生的平均成绩,并输出每个学生的学号、每门课程的成绩及平均值。⑵求某门课程的平均分。要求:⑴分别编写两个函数实现以上两个要求。⑵第一个函数用数组名作参数,第二个函数用指针做参数,并在函数体内用指针对数组操作。 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论