《C期末考试模拟试题(共7页).doc》由会员分享,可在线阅读,更多相关《C期末考试模拟试题(共7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上一、选择题(共15题,每题2分,共30分)1、对于对象和类的关系,说法不正确的是( C )。A)同属于一类的对象,具有相同的数据成员和成员函数B)对象是具体,是类的对象,同其他变量一样,先定义后使用C)同一类的不同对象,其具有的操作可不同,具体的操作也不同D)不同类的对象,可有相同的操作2、不可以成为类的数据成员的是( A )。A)对象 B)另一个类 C)类的指针或引用 D)其他简单的数据类型3、关于类的继承的特性,不正确的是( C )。A)子类对父类具有数据和程序代码的共项特征 B)子类与父类间有所差别C)会增加代码的冗余 D)类间具有层次结构4、下列不正确的是(
2、C )。A)对象必须先说明后使用,其说明的一般形式是:“类名 对象名”B)类的说明是不分配内存空间的,只在程序运行时对对象分配空间C)同一类的不同对象,占有不同的内存空间D)同类不同对象的成员函数占有相同的内存空间,对象中存储的是这些共享代码在内存中的地址5、关于内联函数的说法不正确的是( D )。A)在说明类的同时定义成员函数,则函数隐含为内联函数B)可以在类外用inline关键字,对成员函数进行说明,则该函数也为内联函数C)当内联函数被调用时,内联函数的代码在调用处被展开D)当内联函数被调用时,内联函数将返回结果6、对象的创建可以在定义类的同时创建对象,也可以在使用对象时创建,关于这两种说
3、法正确的是( D )。A)前者创建的对象是全局对象后者创建的对象是局部性的B)前者创建的对象的作用域是整个程序,后者创建的对象的作用域是所在的函数C)前者创建的对象在整个程序运行期间都可被调用D)后者创建的对象的生存期也是整个程序7、面向对象程序设计的基本特点中,下列选项中哪个不是的( B )。A)抽象性 B)复用性 C)继承性 D)多态性8、在C+语言中,下面虚基类的说明中正确的是( C )。A)virtual class B:public A; B)class B:public A virtual; C)class B:virtual public A; D)class virtual B
4、:public A;9、一个类中有( B )个析构函数。A)0 B)1 C)2 D)多个10、下面描述中,表达错误的是( B )。A)公有继承时基类中的public成员在派生类中仍是public的B)公有继承是基类中的private成员在派生类中仍是private的C)公有继承时基类中的protected成员在派生类中仍是protected的D)私有继承时基类中的public成员在派生类中是private的11、对于类的私有成员、公有成员的正确说法是( D )。A)所有成员只对内,不对外B)公有成员也叫接口,是与外部联系的通道C)私有成员主要对数据成员而言,当然有些成员函数也是私有的D)类的私
5、有成员、公有成员只是相对而言,可以随时改变的12、关于继承和封装说法正确的是( C ) 。A)封装就是完全封闭,外部只能通过接口实现互连 B)继承是封装的基础C)封装是继承的基础D)子类可只继承父类的部分可继承行为和属性,也可全部继承,就像儿子可继承父亲的部分性格一样13、关于结构体、共用体及类的说法正确的是( B ) 。A)结构体、共用体没有什么不同,都是把不同或相同类型的数据组织为一体B)一般来说,结构体、共用体只有数据成员,没有成员函数C)结构体、共用体与类相比,都含有数据成员的成员函数,只是前者是专为面向过程的程序设计的,后者为面向对象的程序设计的D)类可只含数据成员或成员函数,不影响
6、使用14、假设person是一个类,p1是该类的一个对象,p2是一个指向p1的指针,getname()是其中的一个函数,则下面对象的使用不正确的是( A ) 。A)person.getname( ) B)p1.getname( ) C)p1.person:getname( ) D)p2-getname( )15、关于成员函数的重载,说法正确的是( A ) 。A)就是在类中设计多个函数名相同,参数个数及类型也相同的函数B)析构函数可以重载C)函数重载,要求函数名相同,但参数个数不同或参数个数相同但其类型不同D)构造函数不可重载二、判断题(每题1分,共10分)1.对象就是C语言中的结构变量。 F2
7、.声明一个引用时,必须同时对它进行初始化,使它指向一个已存在的对象T3.内联函数体内不能有循环语句和switch语句。T4.catch可以通过类型相容或自动转换来接受抛弃的数据。F5.同类不同对象的成员函数占有相同的内存空间,对象中存储的是这些共享代码在内存中的地址。T6.重载函数是靠参数的个数和类型来区分的,参数的传递方式和返回值类型是不起作用的。T7.当内联函数被调用时,内联函数将返回结果。F8.拷贝构造函数的形参必须是本类对象的引用。T9.对象代表着正在创建的系统中的一个实体。T10.重载函数必须有不同的形参名,且重载函数名可以不同。F三、阅读程序,将程序运行结果填写答题册上。(每小题6
8、分,共30分)1、 #include using namespace std;class B0 public: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 Sample protecte
9、d: int x; public: Sample() x=0; Sample(int val) x=val; void operator+() x+; ; class Derived:public Sample int y; public: Derived():Sample() y=0; Derived(int val1,int val2):Sample(val1) y=val2; void operator-() x-; y-; void disp() coutx= x y= y endl; ; void main () Derived d(3,5); d.disp(); d+; d.dis
10、p (); d-; d-; d.disp(); 3、 #includevoid swap1(int a,int b) int t; t=a; a=b; b=t; void swap2(int *a,int *b) int t; t=*a; *a=*b; *b=t; void swap3(int &a,int &b) int t; t=a; a=b; b=t; void main() int x=4,y=5; coutx,yendl; swap1(x,y); coutx,yendl; swap2(&x,&y); coutx,yendl; swap3(x,y); coutx,yendl;4、 #i
11、nclude #include class Vector public: Vector(int s=100); int& Elem(int ndx); void Display(void); void Set(void); Vector(void); protected: int size; int *buffer;Vector:Vector(int s)buffer=new intsize=s;int& Vector:Elem(int ndx)if(ndx=size)couterror in indexendl;exit(1);return bufferndx;void Vector:Dis
12、play(void)for(int j=0; jsize; j+)coutElem(j); coutendl; void Vector:Set(void)for(int j=0; jsize; j+)Elem(j)=j+1;Vector:Vector(void)delete buffer;void main()Vector a(10); Vector b(a); a.Set();b.Display(); 5、#include class B0 public:virtual void display()coutB0:display()endl; ;class B1: public B0 publ
13、ic: void display() coutB1:display()endl; ;class D1: public B1 public: void display() coutD1:display()display(); p=&b1; p-display(); p=&d1; p-display();四、程序填空题(根据题意要求,将程序补充完整,每空3分,共30分)1、下面的程序用来求两个点之间的距离。#include #includeclass Point double x,y; public: Point(double i, double j)x=i;y=j;double getx() r
14、eturn x; double gety() return y; void disp() cout(xy); -; ; double distance(-) double d,dx,dy; dxa.xb.x;dya.yb.y; d= -; return d; void main() -p1(2,2),p2(5,5); p1.disp(); cout与; p2.disp(); cout之间距离=distance(p1,p2)endl; 2、根据提示将Clock类补充完整 class Clockpublic:Clock(int NewH=0,int NewM=0,int NewS=0);void
15、ShowTime();Clock& operator +(); /前置单目运算符重载Clock operator +(int); /后置单目运算符重载private:int Hour,Minute,Second;Clock:Clock(int NewH,int NewM,int NewS)if( -)Hour=NewH;Minute=NewM;Second=NewS;elsecoutTime error!endl;void Clock:ShowTime()coutHour:Minute:Second=60)Second=Second-60;Minute+;if(Minute=60)Minute
16、=Minute-60;Hour+;Hour=Hour%24;- ;Clock Clock:operator +(int) /后置单目运算符重载Clock old= - ; -;return old;3、输入两个整数,求它们的平方和#includeUsing namespace std;Void main(void)int a,b;int fun1(int x,int y);cinab;cout”a,b的平方和:”fun1(a,b)endl;int fun1(int x,int y) -;return(fun2(x)+fun2(y);int fun2(int m) -;4、下面为复数类的定义。c
17、lass Complex public: Complex ( - ) /默认为纯虚数,即实部为0 real=x; image=y; - /对运算符+进行重载实现复数加法 Complex t;t.real= -;t.image= -;return t;void disp() coutreal “+“image ”i“; private: double real,image ; 5、请按下面程序的提示信息将程序填充完整。#include class Point/Point类声明 public:Point(int x,int y) X=x; Y=y; - ;int GetX() return X; /返回X的值int GetY() return Y; /返回Y的值 static void GetC() cout Object id=countPendl; /输出countP的值 private: int X,Y; - ;;int Point:countP=0;/用来统计已生成的Point对象的个数void main() - ;/指向函数的指针gc指向类的成员函数GetCPoint A(4,5);/声明对象AcoutPoint A,A.GetX(),A.GetY(); - ; /通过函数指针gc调用GetC函数专心-专注-专业
限制150内