程序设计基础试卷A(2008).doc_第1页
程序设计基础试卷A(2008).doc_第2页
程序设计基础试卷A(2008).doc_第3页
程序设计基础试卷A(2008).doc_第4页
程序设计基础试卷A(2008).doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(附 2 页 ) 试题纸(A卷) 课程名称: 程序设计基础(二) 适用专业年级:2008级计算机、软件、网络、电本 考生学号: 考 生 姓 名: 一、 单项选择题(每题1分,共15分)1、 关于继承和封装说法正确的是( )。A)封装就是完全封闭,外部只能通过接口实现互连 B)继承是封装的基础C)封装是继承的基础D)子类可只继承父类的部分可继承行为和属性,也可全部继承,就像儿子可继承父亲的部分性格一样2、 关于结构体、共用体及类的说法正确的是( )。A)结构体、共用体没有什么不同,都是把不同或相同类型的数据组织为一体B)一般来说,结构体、共用体只有数据成员,没有成员函数C)结构体、共用体与类相比,都含有数据成员的成员函数,只是前者是专为面向过程的程序设计的,后者为面向对象的程序设计的D)类可只含数据成员或成员函数,不影响使用3、 假设person是一个类,p1是该类的一个对象,p2是一个指向p1的指针,getname()是其中的一个函数,则下面对象的使用不正确的是( )。A)person.getname( ) B)p1.getname( ) C)p1.person:getname( ) D)p2-getname( )4、 关于构造函数的说法,正确的是( )。A)构造函数用于代替类中的一个成员函数在创建对象时给对象赋初值(通常是成员变量),它是由人工设计的,因此可以在任何时候、任何地方来调用它B)构造函数的名字与类名相同,因此同类的不同对象的构造函数是相同的C)构造函数的参数多少没有定制,它的返回值的类型为void型D)构造函数的名字与类名相同,因此一个类只有一个构造函数,即构造函数不可重载5、 关于析构函数的说法,正确的是( )。A)析构函数用来释放构造函数为对象分配的内存空间。它可以被用户调用,也可以被系统调用B)析构函数没有数据类型,其返回值为隐含型C)析构函数可以没有参数,也可以有多个参数D)析构函数与构造函数不一样,它可以有多个,以方便使用6、 关于成员函数的重载,说法正确的是( )。A)就是在类中设计多个函数名相同,参数个数及类型也相同的函数B)析构函数可以重载C)函数重载,要求函数名相同,但参数个数不同或参数个数相同但其类型不同D)构造函数不可重载7、 假设person是一个类,p、q是它的不同对象,有函数person f(person &x),下列过程中没有调用拷贝构造函数的是( )。A)person p(q); B)person pq; C)qf(p); D)person p(10)8、 关于友元函数的说法正确的是( )。A)友元函数可以是任何类中的一个函数B)如果函数在被说明为友元函数的类中定义,则它就是该类的成员函数C)不属于任何类的函数不可以被说明为友元函数D)使用友元函数的主要目的是提高程序执行效率,因为它可以直接调用该类的私有变量。9、 关于静态数据成员的说法正确的是( )。A)静态数据成员虽然能实现同类的对象共享数据,但破坏了类的封装性B)静态数据成员是所有同类对象共享的数据,它不能具体地属于哪一个对象C)静态数据成员只在类中说明一次即可D)静态数据成员可在类中声明时进行初始化10、 关于继承的目的和作用,说法不正确的是( )。A)继承是为了重复利用父类的可用代码,避免重复劳动B)继承可以增加自己的父类不能实现的功能的代码,使子类的功能更完美,提高程序设计效率C)子类可以继承父类的函数和数据,以便重复使用D)子类可以继承父类的所有特性,以便重复使用,这才是继承的目的11、 下列try、catch语句块说法不正确的是( )。A)try语句块出现之前不允许出现catch语句块B)catch语句块只能跟在try语句块之后,它们之间可以有其他语句C)try语句块之后可以紧跟多个catch语句块D)catch必须有参数12、 假定AB为一个类,则执行“AB a(4) , b3 , * p2 ;”语句时,自动调用该类构造函数的次数为( )。A)3 B)4 C)6 D)913、 假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:( )。A)AB operator+(AB & a , AB & b) B)AB operator+(AB & a)C)operator+(AB a) D)AB & operator+( )14、 如果要对AB类中的整型静态变量c赋初值0,则书写语句正确的是( )。 A)int c=0; B)static int c=0; C)int AB: c=0; D)static int AB: c=0;15、 在进行完任何C+流的操作后,都可以用C+流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是( )。A)fail B)eof C)bad D)good二、 判断题(每题1分,共10分)1. 为了避免派生类catch不能捕获异常,基类catch总是放在派生类catch后。2. 同一类的不同对象占有不同的内存空间。3. 当内联函数被调用时,内联函数的代码在调用处被展开。4. 数据只有在流中才可以被操作。5. 把流分为输入流和输出流是相对文件流的,输出流是数据从文件流向流中,输入流是数据从流中流向内存变量。6. 函数的返回值类型在区别重载函数时起着举足轻重的作用。7. 多重继承往往产生二义性问题,可用成员名限定法来消除。8. 基类构造函数的调用顺序是按基类被继承时声明的顺序从右至左调用。9. 已知:double k=10; 可以用double &p=10; 表示引用。10. virtual 只用来说明类声明中的函数原型,不能用在函数实现时。三、 阅读程序,将程序运行结果填写答题册上。(每小题5分,共20分)1、 #include class B0 public:virtual void display()coutB0:display()endl; ;class B1: public B0 public: void display() coutB1:display()endl; ;class D1: public B1 public: void display() coutD1:display()display(); p=&b1; p-display(); p=&d1; p-display();2、# include class A int a;public: A(int aa=0) a=aa; A() cout Destructor A!aendl; ;class B:public A int b;public: B(int aa=0,int bb=0):A(aa) b=bb; B() cout Destructor B!bendl; ;void main() B x(5),y(6,7); 3、# include int a=5;void main() int a=10,b=20; cout a bendl; int a=0,b=0;for (int i=1; i6; i+) a+=i; b+=a; cout a b :aendl; cout a bendl;4、#include class B1 public: B1(int i) coutconstructing B1 iendl; B1() coutdestructing B1 endl; ;class B2 public: B2(int j) coutconstructing B2 jendl; B2() coutdestructing B2 endl; ;class B3 public: B3() coutconstructing B3 *endl; B3() coutdestructing B3 endl; ;class C: public B2, public B1, public B3 public: C(int a, int b, int c, int d): B1(a),memberB2(d),memberB1(c),B2(b)private: B1 memberB1; B2 memberB2; B3 memberB3;void main() C obj(1,2,3,4); 5、 #includevoid main( ) Try int a=8; double b=8.8; throw ab?a:b; catch( int x ) cout”the int value “x”was thrown”endl; catch( double y ) cout”the double value “y”was thrown”endl; 四、 程序填空题(根据题意要求,将程序补充完整,每空2分,共20分)1、下面程序的功能是输出将1元人民币换成1分、2分、5分的所有方案,请填空。#include (1) void main( ) int i,j,k,s=0; for( i=0; i=20; i+ ) for( j=0; j=0) coutsetw(3)isetw(3)jsetw(4)kendl; s+; cout”共有方案”s”种”endl; 2、下面为复数类的定义。class Complex public: Complex ( (3) ) /默认为纯虚数,即实部和虚部都为0 real=x; image=y; (4) /对运算符+进行重载实现复数加法 Complex t;t.real= (5) ;t.image= (6) ;return t;void disp() coutreal“+“image”i“; private: double real,image; 3、请按下面程序的提示信息将程序填充完整。#include class Point/Point类声明 public:Point(int x,int y) X=x; Y=y; (7) ;int GetX() return X; /返回X的值int GetY() return Y; /返回Y的值 static void GetC() cout Object id=countPendl; /输出countP的值 private: int X,Y; (8) ;;int Point:countP=0;/用来统计已生成的Point对象的个数void main() (9) ;/指向函数的指针gc指向类的成员函数GetCPoint A(4,5);/声明对象AcoutPoint A,A.GetX(),A.GetY(); (10) ; /通过函数指针gc调用GetC函数五、 编程题(第1小题8分,第2小题10分,第3小题12分,共30分)1、编写一个程序,至少设计一个点类Point,求两个点之间的距离。2、下面为单链表的结点类模板,各成员数据以及成员函数的意义在后面进行了描述,请将其4个成员函数的实现代码补充完整。template class Node private: Node *next;/指向后继结点的指针 public: T data;/数据域 Node (const T& item, Node* ptrnext = NULL); / 构造函数 void InsertAfter(Node *p);/ 在本结点之后插入一个同类结点p Node *DeleteAfter(void);/ 删除本结点的后继结点,并返回其地址 Node *NextNode(void) const; / 获取后继结点的地址;3、设计一个倒计时的时钟类,该类包括days,hours,minutes,seconds四个成员数据,分别表示倒计时的天数、小时数、分钟数和秒数,成员函数包括构造函数、显示四个成员数据值的函数和后置运算符的重载函数,要求倒计时的最短时间为10天9小时8分7秒。参考答案一、 单项选择题(每题1分,共15分)(1)C(2)B(3)A(4)B(5)A(6)C(7)D(8)D(9)B(10)D(11)B(12)C(B)(13)B(14)D(C)(15)B二、 判断题(每题1分,共10分)(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)三、 阅读程序,将程序运行结果填写答题册上。(每小题5分,共25分) 注:1、教师命题时题目之间不留空白; 2、考生不得在试题纸上答题,教师只批阅答题册正面部分。1、 B0:display()B1:display()D1:display()2、 Destructor B! 7Destructor A! 6Destructor B! 0Destructor A! 53、 10 2015 35 510 204、 constructing B2 2constructing B1 1constructing B3 *constructing B1 3constructing B2 4constructing B3 *destructing B3destructing B2destructing B1destructing B3destructing B1destructing B25、the double value 8 was thrown四、 程序填空题(每空2分,共20分)(1)#include(2)k=100-5*i-2*j;(3)double x=0, double y=0 (4)Complex operator +(Complex &y) (5)real+y.real(6)image +y.image(7)countP+;(8)static int countP;(9)void (*gc)()=Point:GetC (10)gc()五、 编程题(第1小题8分,第2小题10分,第3小题12分,共30分)1、#include #includeclass Point double x,y; public: Point(double i, double j)x=i;y=j;double getx() return x; double gety() return y; void disp() cout(xy); ; double distance(point px,point py) double d,dx,dy; dx=px.getx()-py.getx(); dy=px.gety()-py.gety();d=sqrt(dx*dx+dy*dy); return d; void main() point p1(2,2),p2(5,5); p1.disp(); cout与; p2.disp(); cout之间距离=distance(p1,p2)endl; 2、template Node:Node(const T& item, Node* ptrnext) : data(item), next(ptrnext) template / 返回后继结点的指针Node *Node:NextNode(void) const return next; / 在当前结点之后插入一个结点p template void Node:InsertAfter(Node *p) p-next = next;/p结点指针域指向当前结点的后继结点 next = p;/当前结点的指针域指向p / 删除当前结点的后继结点,并返回其地址template Node *Node:DeleteAfter(void)Node *tem

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论