c试题及答案2

上传人:微*** 文档编号:171642582 上传时间:2022-11-28 格式:DOCX 页数:46 大小:120.26KB
收藏 版权申诉 举报 下载
c试题及答案2_第1页
第1页 / 共46页
c试题及答案2_第2页
第2页 / 共46页
c试题及答案2_第3页
第3页 / 共46页
资源描述:

《c试题及答案2》由会员分享,可在线阅读,更多相关《c试题及答案2(46页珍藏版)》请在装配图网上搜索。

1、、单项选择题(本大题共20小题,每小题1分,共20分)1.编写C+程序一般需经过的几个步骤依次是A.编辑、调试、编译、连接B.编辑、编译、连接、运行C.编译、调试、编辑、连接D.编译、编辑、连接、运行答案:B2 .决定C+语言中函数的返回值类型的是()A. return语句中的表达式类型B.调用该函数时系统随机产生的类型C.调用该函数时的主调用函数类型D.在定义该函数时所指定的数据类型答案:D3 .下面叙述不正确的是A.派生类一般都用公有派生B.对基类成员的访问必须是无二义性的C.赋值兼容规则也适用于多重继承的组合D.基类的公有成员在派生类中仍然是公有的答案:D4 .所谓数据封装就是将组数据和

2、与这组数据有关操作组装在一起,形成一个实体,这实体也就是()A.类B.对象C.函数体D.数据块答案:A,在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的A.私有成员B.公有成员C.保护成员D.保护成员或私有成员答案:A6 .对基类和派生类的关系描述中,错误的是()A.派生类是基类的具体化B.基类继承了派生类的属性C.派生类是基类定义的延续D,派生类是基类的特殊化答案:B7 .关于this指针使用说法正确的是A.保证每个对象拥有自己的数据成员,但共享处理这些数据的代码8保证基类私有成员在子类中可以被访问。C.保证基类保护成员在子类中可以被访问。保证基类公有成员在子

3、类中可以被访问。答案:A8 .所谓多态性是指A,不同的对象调用不同名称的函数B.不同的对象调用相同名称的函数C. 个对象调用不同名称的函数D. 个对象调用不同名称的对象答案 B9.个函数功能不太复杂,但要求被频繁调用,则应把它定义为A.内联函数B.重投函数C.递归函数D.嵌套函数答案:A10 .面函数模板定义中不正确的是()A. AB. BC. CD. D 答案:A11 .假设ClassY:publicX,即类丫是类X的派生类,则说明一个丫类的对象时和删除丫类对象时,调用构造函数和析构函数的次序分别为A. X, Y; Y,XB. X, Y; X, YC. Y,X; X,YD. Y, X; Y.

4、X 答案:A12 .适宜采用inline定义函数情况是A.函数体含有循环语句B.函数体含有递归语句C,函数代码少、频繁调用D.函数代码多、不常调用答案:C13 .假定一个类的构造函数为A(int aa, int bb)a=aa;b=a*bb;,则执行A x(4,5);语句后,x.a和x.b的值分别为A. 3和15B. 5和4C. 4和20D. 20和5答案:C 14.在类中说明的成员可以使用关键字的是() A. publicB. externC. cpuD. register 答案.A 15.下列不能作为类的成员的是() A,自身类对象的指针 B,自身类对象 C,自身类对象的引用 D.另一个类

5、的对象答案:B 6.使用地址作为实参传给形参,下列说法正确的是() A.实参是形参的备份B.实参与形参无联系C.形参是实参的备份D.实参与形参是同一对象答案 D17 .下列程序的输出结果是()#include void main()int n 3=10,20,30,40,50,60);int (*p)3;P=n;coutp 0,”*(p 0+1),(*p)2endl;A. 10,30,50B. 10,20,30C. 20,40,60D. 10,30,60答案:B18 .星C+中,使用流进行输入输出,其中用于屏幕输入A. cinB. cerrC. coutD. clog答案:A19 .假定AA为

6、个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为A. x. aB. x. a()C. x-aD. (*x).a()答案:B20 .关于対象概念的描述中,说法错误的是A.对象就是C语言中的结构变量B.对象代表着正在创建的系统中的个实体C.对象是类的个变量D.对象之间的信息传递是通过消息进行的答案.A二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。1 . C+的流库预定义了4个流,它们是cin、cout、clog和。答案:(P193)cerr2 .每个对象都是所属类的个答案:(P69)实例3 .在已经定

7、义了整型指针ip后,为了得到个包括10个整数的数组并由ip所指向,应使用语句_答案:(P78) int *ip=new int 10;4 .函数模板屮紧随template之后尖括号内的类型参数都要冠以保留字。答案:(P145)class5 .定义类的动态对象数组时,系统只能够自动调用该类的构造函数对其进行初始化。答案:(P80)无参6 .表达式coutendl还可表示为。答案:n7 .在C+中,访问个指针所指向的对象的成员所用的指向运算符是.答案:-8 .假如一个类的名称为MyClass,使用这个类的个对象初始化该类的另个对象时,可以调用构造函数来完成此功能。答案:(P80)复制或拷贝9 .対

8、赋值运算符进行重载时,应声明为函数。答案:(P183)类成员10 .如果要把A类成员函数f ()且返冋值为void声明为类B的友元函数,则应在类B的定义中加入的语句。答案:(P109) friend void A: f ();11 .下列程序段的输出结果是。for(i=0, j=10, k=0; i=j;i+, j-=3, k=i+j);coutk;答案:412 . String类的一方法返回查找到的字符串在主串的位置。答案:(P40)find13 . int n=0;while (n=l) n+;while循环执行次数是。答案:无限次14 .控制格式输入输出的操作中,函数一是用来设置填充字符

9、。要求给出函数名和参数类型答案:(P195)setfill (char)15 . C+语言支持的两种多态性分别是编译时的多态性和一的多态性。答案:(P167)运行时16 .设函数sum是由函数模板实现的,并且sum(3,6)和sum(4.6,8)都是正确的函数调用,则函数模板具有一个类型参数。答案:(P6D217 .执行下列代码string str(HelloC+”);coutstr. substr (5,3);程序的输出结果是。答案:(P42)C+18,在面向对象的程序设计中,将一组对象的共同特性抽象出来形成。答案:(P38)类19 .定义类动态对象数组时,元素只能靠自动调用该类的来进行初始

10、化。答案:(P77)无参构造函数20 .已知有20个元素int类型向量VI,若用VI初始化为V2向量,语句是答案:(P151)ector V2(Vl);三、改错题(本大题共5小题,每小题2分,共10分)1. #include class Test private: int x,y=20;public:Test (int i,int j)x=i, y=j;int getx()return x; int gety()return y;;void main()Test mt (10,20);coutmt. getx ()endl;coutmt. gety ()endl;)答案:int x,y=20;

11、在类内部不能对数据成员直接赋值。修改int x,y;2. #include class Test int x, y;public:fun (int i,int j)x=i;y=j;show()coutx=x;if (y)cout,y二yendl;coutendl;;void main()Test a; a. fun(l); a. show(); a. fun (2,4); a. show();)答案:int i, int j调用时,既有一个参数,也有两个参数,且没有重载,所以参数需要带默认值。所以int i, int j 错误。修改int i, int j=0注j只要有一个int类型的数据就行

12、。3. #include class A int i;public:virtual void fun()=0;A(int a)i=a;);class B:public Aint j;public: void fun()coutB:fun()n”; B(int 叫 int n=0):A(m), j(n); void main()A *pa;B b(7); pa=&b;)答案:B(int m,int n0):A(m), j(n)因为基类是抽象类,不能被实例化,所以在派生类中不能调用初始化基类对象。所以 B(int m, int n ): A(m), j (n)错误,删去 A(m)。修改B(int

13、m, int n=0): j(n)4.#include class X public: int x;public:X(int x)coutthis-x=xendl;X(X&t)x=t. X;coutt. xendl;void fun(X););void fun(X t)coutt. xx=xendl;要输出thisx=x表达式的值要加括号。修改coutx=x)endl;5,#include #include class Bas public:Bas(char *s=0)strcpy(name, s);) void show();protected:char name 20;;Bas b;voi

14、d show()coutname:b. nameendl; void main()Bas d2(hello);show();)答案:void show();是普通函数不是成员函数,但是要访问类成员,需要定义为友元函数。修改friend void show。;四、完成程序题(本大题共5小题,每小题4分,共20分)1,在下面程序横线处填上适当字句,以使该程序执行结果为:50434211007.18.19.110.111.1include template void f ();for (int i=0;in/2;i+)t=a i, a i=a n-l-i, a n-l-i=t;void main (

15、)int a 5=10,21,34,4,50;double d 6=11.1,10.1,9.1,8.1,7.1;f(a,5);f(d,6);for (int i=0;i5;i+)cout a i cout endl;for (i=0;i6;i+) cout d i”; cout endl;答案:T a , int n, T t=0;解析不同的数据类型的调用,使用了模板。f函数增加t变量,因为实参类型不同,所以t的类型应该是T类型的。2在下面程序的底画线处填上适当的字句,使该程序执行结果为40。include class Test public:Test (int i=0)x=i+x; int

16、GetnumO return Test:x+7;); void main()Test test;couttest. GetnumO endl;)答案:static int x;, int Test:x=30;解析从成员函数访问方式类名:成员可知是静态成员所以static int x;从结果要对初始化为30,且在类外进行初始化,int Test:x=30;3 .在下列程序的空格处填上适当的字句,使输出为:0,2,10oinclude include class Magic double x;public:Magic (double d=0.00):x(fabs(d)Magic operator+

17、()(return Magic(sqrt (x*x+c. x*c.x);)operator(ostream & stream, Magic & c) streamc. x; return stream;);void mainOMagic ma;coutma,Magic (2),ma+Magic (-6)+ Magic(-8)endl;)答案:operator+(Magic&c), friend ostream&operator解析对加法进行重载,operator+(Magic & c)是对插入符进行重载,要访问成员所以定义为友元函数,friend ostream & operator。4 .下

18、面是个输入半径,输出其面积和周长的C+程序,在下划线处填上正确的语句。#include void main()double rad;cout“rad=;cinrad;double 1=2.0*pi*rad;double s=pi*rad*rad;cout”n The long is:lendl;coutThe area is:*sendl;答案:using namespace std,#def ine pi 3.14159解析进行输入或输出要引入iostream,所以using namespace std;从标点看没有分号,所以使用宏定义,define pi 3.14159。5 .程序实现大写

19、字母转换成小写字母。include void main()(char a;cina;if()a=a+i;cout=A & a=Z解析大写字母变小写字母相差32,需要对i声明并初始化。大写字母变小写字母。要判断字符是大写字母。五、程序分析题(本大题共4小题,每小题5分,共20分)/.给出下面程序输出结果。#includeclass apublic:virtual void print()couta prog. endl;);class b:public a();class c:public bpublic:void print ()coutc prog.,endl;);void show(a *

20、p)(*p). print();)void main()a a;b b;c c;show (&a);show(&b);show(&c);)答案:a prog.a prog.c prog.解析考查多态性的。a类对象调用本身的虚函数,b类因为没有覆写print,所以仍然调用基类的虚函数。而c类重新定义print虚函数,所以调用c类的print。2.给出下面程序输出结果。1 include ttinclude #include bool fun(long n);void mainOlong a=10, b=30,1=0;if(a%2=0) a+;for (long m=a;m=b;m+=2)if(f

21、un(m)(if(l+%10=0)cout endl;cout setw(5)m;)bool fun(long n)int sqrtm=(int)sqrt(n);for(int i=2;i=sqrtm;i+)if(n%i=0)return false;return true;)答案:111317192329解析循环体用来判断n是否是质数的函数,在main函数判断1030之间质数。3 .给出下面程序输出结果。#include class Testint x, y;public:Test (int i,int j=0)x=i;y=j;int get(int i,int j)return i+j;)

22、;void mainOTest tl(2),t2(4,6);int (Test:*p)(int, int=10);p二Test:get;cout(tl.*p)(5)endl;Test *pl=&t2;cout(plp)(7,20)endl;)答案:1527解析指向类成员函数的指针的使用,*p指向Test类中有两个参数的函数的个指针。P=Test:get.这样p就和get 发生了联系。(tl.*p)(5)等价于调用个参数的get函数。4 .include include #include class studentchar name 8;int deg;char level 7;friend c

23、lass process;/Z 说明及兀类public:student(char na , int d) strcpy(name, na);deg=d;class process public:void trans(student &s)int i=s. deg/10;swi tch(i)case 9:strcpy (s. level,“优);break;case 8:strcpy(s. level,良);break;case 7:strcpy(s. level,中);break;case 6:strcpy (s. level,及格”);break;default:strcpy(s. leve

24、l,不及格);)void show(student &s)coutsetw(10)s. namesetw(4)s. degsetw(8)s. levelendl;;void mainO student st !=student (张三,78), student (李四,92), student (王五,62), student (孙六,88);process p;cout结果:姓名setw(6)成绩setw(8)等级endl;for(int i二;i4;i+) p. trans (st i);p. show(st i);)答案:结果:姓名成绩等级张三78中李四92优王五62及格孙六88良六、程

25、序设计题(本大题共1小题,共10分)I.已定义个Shape抽象类,在此基础上派生出矩形Rectangle和圆形Circle类,二者都有GetPerim ()函数计算对象的周长,并编写测试main 函数。class Shapepublic:Shape ()Shape ()virtual float GetPerim()=0;答案:class Rectangle:public Shapepublic:Rectangle(float i,float j):L(i), W(j)Rectangle0float GetPerimO return 2*(L+W);)private:float L, W;;c

26、lass Circle:public Shapepublic:Circle(float r):R(r)float GetPerimO return 3.14*2*R;private:float R;);void main()Shape * sp;sp=new Circle(10);coutGetPerim ()endl;sp=new Rectangle(6,4);coutsp-GetPerim()endl;)、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无1.静态成员函数没有()A.返回

27、值B. th is指针C.指针参数D.返回类型答案:B2.假定AB为个类,则执行“AB a(2), b 3,*p 4语句时调用该类构造函数的次数为()A. 3B. 4C. 5D. 9答案:B3.有关多态性说法不正确的是()A. C+语言的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数重载实现C.运行时的多态性可通过模板和虚函数实现D.实现运行时多态性的机制称为动态多态性答案,C4.假定一个类的构造函数为“A(int i=4, int j=0)a=i;b=j;”,则执行“A x (1);“语句后,丽的值分别为A. 1和0B. 1和4C. 4和D. 4和1答案:A5 .类My

28、A的拷贝初始化构造函数是A. MyAOB. MyA(MyA*)C. MyA(MyA&)D. MyA(MyA)答案:C6 .在C+中,函数原型不能标识A.函数的返回类型B.函数参数的个数C,函数参数类型D.函数的功能答案:D7 .友兀关系不能()A.提高程序的运行效率B,是类与类的关系C.是个类的成员函数与另个类的关系D.继承答案:D8 .实现两个相同类型数加法的函数模板的声明是A. add (T x, T y)B. T add (x, y)C. T add (T x, y)D. T add(T x, T y)答案:D9.在int a=3, int *p=&a:中,*p的值是()A.变量a的地址

29、值B.无意义C.变量p的地址值D.3答案:D10 .下列不是描述类的成员函数的是()A.构造函数析构函数C,友元函数D,拷贝构造函数答案 C11 .如果从原有类定义新类可以实现的是()A.信息隐藏B.数据封装C.继承机制D,数据抽象答案:C12 .下面有关类说法不正确的是()A. 个类可以有多个构造函数B. 一个类只有一个析构函数C.析构函数需要指定参数D.在个类中可以说明具有类类型的数据成员答案:C13 .在函数定义中的形参属于A.全局变量B.局部变量C.静态变量D.寄存器变量答案:B14 .下列有关重载函数的说法中正确的是()A.重载函数必须具有不同的返回值类型8.重载函数参数个数必须相同

30、C,重载函数必须有不同的形参列表D,重投函数名可以不同答案:C15. this指针存在的目的是4保证基类私有成员在子类中可以被访问6.保证基类保护成员在子类中可以被访问C.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码保证基类公有成员在子类中可以被访问答案:C16 .关于new运算符的下列描述中,错误的是A.它可以用来动态创建对象和对象数组使用它创建的对象或对象数组可以使用运算符delete删除C,使用它创建对象时要调用构造函数使用它创建对象数组时必须指定初始值答案:D17 .已知:p是一个指向类A数据成员m的指针,A1是类A的个对象。如果要给m赋值为5,正确的是()A. Al.

31、p=5;B. Al-p=5;C. Al.*p=5;D. *A1. p=5;答案:C18 .以下基类中的成员函数表示纯虚函数的是()A. virtual void tt()=0B. void tt(int)=0C. virtual void tt(int)D. virtual void tt (int)答案:A19 . C+类体系中,不能被派生类继承的有()A.常成员函数B.构造函数C.虚函数D.静态成员函数答案:B20.静态成员函数不能说明为A,整型函数B.浮点函数C.虚函数D,字符型函数答案:C二、填空题(木大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无

32、分。1.假设int a=l,b=2;则表达式(+a/b)*b的值为.答案:22抽象类中至少要有一个函数。答案:(P173)纯虚3 .个抽象类的派生类可以实例化的必要条件是实现了所有的。答案:(P173)纯虚函数的定义4 .下面程序的输出结果为Sinclude void main()int num=2, i=6;doi-;num+;while(i);coutnumendl;)5 .静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是.答案:(P109)友元函数6 .在用C+进行程序设计时,最好用一代替malloc。答案:(PlO)new7 .由const修饰的对象称为_0答案:(P1

33、13)常对象8 .在C+程序设计中,建立继承关系倒挂的树应使用继承。答案:(P138)单9 .基类的公有成员在派生类中的访问权限由一决定。答案:(P132)访问控制方式或继承方式10 .不同对象可以调用相同名称的函数,但执行完全不同行为的现象称为答案:(P167)多态性this指针始终指向调用成员函数的。答案:对象12 .预处理命令以符号开头。答案:(P183)operater13 .类模板用来表达具有一的模板类对象集。答案:(P145)相同处理方法14 . C+程序的源文件扩展名为。答案:(P21)cpp15 .在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是的头文件

34、。答案:(P7)自定义16 . vector类中向向量尾部插入一个对象的方法是答案:(P157)push_back17 . C+语言中如東调用函数时,需要改变实参或者返回多个值,应该采取方式。答案:(P51)传地址或引用18 .语句序列ifstream infile;infile, open ( adata. datw );的功能可用个语句实现,这个语句是答案:(P199) ifstream infile(data, dat”);19 .如果要把类B的成员函数void fun()说明为类A的友元函数,则应在类A中加入语句答案:(Plll)friend void B:fun();20 .在编译指

35、令中,宏定义使用指令。答案:(P6、97)#define三、改错题(本大题共5小题,每小题2分,共10分)1. #include include #include using namespace std;class Apublic:A(const char *na)strcpy(name, na);private:char name 80;;class B:public A public:B (const char *nm):A(nm)void show();;void B:show() cout“name:“nameendl;void main() B bl(B);bl. show();答案

36、:private:因为name如果是私有的,在派生类中无法访问,而基类没有提供成员函数来访问name,所以更改name 访问权限为公有或保护,这样对于派生类来说是透明的。修改public:或protected:2. #include void f(int *a,int n)int i=0, j=0;int k二。;for(;in/2;i+)(k=a i;a i=a n-i-1;a n-i-1=k;)void show(int a , int n)for (int i=0;in;i+)couta i”coutendl;void main()int p 5;int i =0, n=5;for(;i

37、5;i+)p i=i;f (*p, n);show (p, n);答案:修改f(p,n);解析f(*p,n);f函数第一个参数是指针而调用时使用p,*p表示p所指向的变量或对象,不是地址即不是指针。3. tinclude void main()int i (3),j(8);int * const p=&i;coutpendl;P=&j;cout*pendl;答案:int * const p二&i;在指针变量前加const表示个常指针即地址不能变化,它指向的变量不能改变且定义时必须设置指向变量或对象的地址。修改int *p=&i;4. include void main ()int i,*p;i

38、=10;*p 二 i;cout*pendl;)答案:*P二i;指针即地址没有被赋值。修改P=&i;5. ttinclude class Aprivate:int x, y;public:void fun(int i,int j)x=i;y=j;void show()coutxyendl;);void main()A al;al. fun(2);al. show();)答案:void fun(int i,int j)调用时有一个参数,形参有两个,可以使第二个带默认值。修改void fun(int i, int j=0)四、完成程序题(本大题共5小题,每小题4分,共20分)完成下面类中成员函数的定

39、义。#include include using namespace std;class strprivate:char *st;public:str (char *a)set (a);)str & operator=()delete st;set (a. st);return *this;void show()coutstendl;“str()delete st;void set (char *s)初始化ststrcpy(st,s);;void mainOstr sl(he),s2(she);si. show(), s2. show();s2=sl;si. show(), s2. show(

40、);答案:str &a st=new char strlen(s)+l;2 .个类的头文件如下所示,num初始化值为5,程序产生对象T,且修改num为10,并使用show()函数输出num的值10。#include class Testprivate:static int num;public:Test (int);void show();;Test:Test(int n)num=n;void Test:show()coutnumendl;void mainO Test t(10);答案:int Test:num=5;, t. show();3 .下面是个三角形三边,输出其面积C+程序,在下划

41、线处填上正确的语句。 ttinclude #include void area()double a, b, c;cout“Input a b c:;if(a+bc&a+cb&c+ba)double 1=(a+b+c)/2;coutThe area is:sbc;, double s=sqrt (1*(1-a)*(l-b)*(l-c);4 .下面程序中Base是抽象类。请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:Deri called!Der2 called!#include class Base public:);class Deri:public Basepublic:

42、void display。cout“Deri called!endl;;class Der2:public Basepublic:void di splay ()coutdisplay();void main()Deri bl;Der2 b2;Base * p=&bl;fun(p);p=&b2;fun(p);答案:virtual void display ()=0;, Base *p5 .下面程序中用来求数组和。请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:s=150。include class Arrint *a, n;public:Arr ():a(0), n(0)Ar

43、r(int *aa, int nn)n=nn;a=new int n;for(int i=0;inn;i+)*(a+i)=*(aa+i);Arr()delete a;)(return *(a+i);;void main()int b 5=10,20,30,40,50);Arr al (b,5);int i=0, s=0;s+=al. GetValue(i);couts=sendl;答案:int GetValue(int i), for (; i5; i+)五、程序分析题(本大题共4小题,每小题5分,共20分)1,给出下面程序输出结果。include class example(int a;pu

44、blic:example(int b=5)a=b+; void print()a=a+l;cout a“; void print()const coutaendl;; void main()example x;const example y(2);x. print ();y. print ();)答案:622给出下面程序输出结果。include void mainO int *pl; int *p2=&pl;int b=20;pl=&b;cout*p2endl;)答案:203给出下面程序输出结果。include class Base private: int Y;public:Base (in

45、t y=0)Y=y;cout“Base (y)n;Base ()coutBase ()n; void print()cout Y;); class Derived:public Base (private: int Z;public:Derived (int y, int z):Base(y)Z=z;coutDerived(y,z)n;)Derived()coutDerived。n; void print()(Base:print();coutZendl;);void main()Derived d(10,20);d. print ();答案:Base(10)DeriveddO,20)1020

46、Derived。BaseO4.给出下面程序输出结果。include class A public: AOcoutA 构造函数、n”;fun(); virtual void fun()coutA:fun()函数、n”;);class B:public Apublic:BOcoutB构造函数n;fun();void funO cout*B:fun() calle函数n;;void main0B d;答案:A构造函数A:fun()函数B构造函数B:funOcalle函数六、程序设计题(本大题共1小题,共10分)编写类String的构造函数、析构函数和赋值函数和测试程序。已知类String的原型为:i

47、nclude #include class String public:String(const char *str=NULL);/普通构造函数String (const String &other);/Z 拷贝构造函数“String;析构函数String & operator=(const String &other);/Z 赋值函数 void show()coutm dataendl;private:char *m data;/Z用于保存字符串);答案:String:String0delete m_data;由于m_data是内部数据类型,也可以写成delete m_data;String

48、:String(const char *str)if(strNULL)m_data=new char 1;若能加NULL判断则更好*m data二;) else int length二strlen(str); m_data=new char length+1;若能加NULL判断则更好 strcpy(m data, str);) String:String(const String fiother)int length=strlen(other. m_data); m_data=new char length+1/若能加NULL判断则更好 strcpy(m data, other, m data

49、);)String & String:operator=(const String &other)if(this&other)return *this;delete m_data;int length=strlen(other. m_data);m data=new char length+1/若能加NULL判断则更好strcpy(m_data, other, m data);return *this;)void main()String strl (aa), str2;strl. show();str2=strl;str2. show();String str3(str2);str3. sh

50、owO ;)一、单项选择题(本大题共20小题,每小题1分,共20分)1 .设有定义int i;double j =5;,则10+i+j值的数据类型是A. intB. doubleC. floatD,不确定答案:B2 .要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为A. const char *p=ABCD:B. char *const p=ABCD;C. char const *p=ABCD”;D. const char * const p=ABCD;答案:D3 .类的构造函数被自动调用执行的情况是在定义该类的A,成员函数时B.数据成员时C.对象时D.友元函数时答案:C4

51、 .已知类A是类B的友元,类B是类C的友元,则A.类A一定是类C的友元B.类C一定是类A的友元C.类C的成员函数可以访问类B的对象的任何成员D.类A的成员函数可以访问类B的对象的任何成员答案:C5 .假定一个类的构造函数为A(int i=4, int j=0)a=i;b=j;,则执行A x;语句后,金和的值分别为A. 1和。B. 1和4C. 4和。D. 4和1答案:A6 .关于this指针使用说法正确的是A.保证每个对象拥有自己的数据成员,但共享处理这些数据的代码保证基类私有成员在子类中可以被访问。C.保证基类保护成员在子类中可以被访问。D.保证基类公有成员在子类中可以被访问。答案:A7 .所

52、谓多态性是指A,不同的对象调用不同名称的函数8 .不同的对象调用相同名称的函数C. 个对象调用不同名称的函数D. 个对象调用不同名称的对象答案:B8.友元关系不能A,提高程序的运行效率B.是类与类的关系C.是一个类的成员函数与另个类的关系D.继承答案:D9.语句ofstream f(TEMP. DAT, ios:app I ios:binary)?的功能是建立流对象f,试图打开文件TEMP. DAT并与之连接,并且A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建

53、立一个新文件D,若文件存在,打开失败;若文件不存在,建立一个新文件答案:A/.构造函数不具备的特征是A.构造函数的函数名与类名相同6.构造函数可以重载C.构造函数可以设置默认参数D.构造函数必须指定类型说明答案:D11.1公有继承的情况,基类的公有或保护成员在派生类中的访问权限()A,受限制保持不变C,受保护D,不受保护答案:B12.假定一个类的构造函数为A(int aa, int bb)a=aa-;b=a*bb;,则执行A x(4,5):语句后,x. a和x. b的值分别为()A. 3和15B. 5和4C. 4和20D. 20和5答案:C13 . C+对C语言做了很多改进,即从面向过程变成为

54、面向对象的主要原因是()A,增加了一些新的运算符B.允许函数帀载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念答案:D14 .在类中说明的成员可以使用关键字的是A. publicB. externC. cpuD. register答案:A15 . C+语言中所有在函数中定义的变量,连同形式参数,都属于A.全局变量B.局部变量C.静态变量D.函数答案:B16 .在私有继承的情况下,基类成员在派生类中的访问权限()A,受限制6.保持不变C.受保护D.不受保护答案:A17.使用地址作为实参传给形参,列说法正确的是A.实参是形参的备份B.实参与形参无联系C,形参是实参的备份D.实参与形参是同一对象答案:D18 . C+的继承性允许派生类继承基类的()A.部分特性,并允许增加新的特性或市定义基类的特性B.部分特性,但不允许增加新的特性或重定义基类的特性C,所有特性,并允许增加新的特

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!