自学考试C++程序设计试题.docx

上传人:无*** 文档编号:87074356 上传时间:2023-04-16 格式:DOCX 页数:177 大小:267.32KB
返回 下载 相关 举报
自学考试C++程序设计试题.docx_第1页
第1页 / 共177页
自学考试C++程序设计试题.docx_第2页
第2页 / 共177页
点击查看更多>>
资源描述

《自学考试C++程序设计试题.docx》由会员分享,可在线阅读,更多相关《自学考试C++程序设计试题.docx(177页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、自学考试C+程序设计试题课程代码:04737、单项选择题(本大题共20小题,每题1分,共20分)1 .对C+言语和C言语的兼容性,描述正确的选项是(A )A. C+兼容C B. C+局部兼容CC. C+不兼容CD. C兼容C+2 .在C+中使用流进行输入输出,其中用于屏幕输出的对象是(C )A. cerr B. cin C. cout D. cfile(ce门1:标准错误输出(非缓冲方法);cin:标准输入;clog标准错误输出(缓冲方法)3 .对使用关键字new所开发的动态存储空间,释放时必须使用(C )A. free B. create C. delete D. realse4 .如没有使

2、用private关键字定义类的数据成员,则默认为(A )A. private B. public C. protected D. friend5 .使用值传递方法将实参传给形参,以下说法正确的选项是(A )A,形参是实参的备份B.实参是形参的备份C.形参和实参是同一对象D.形参和实参无 联系6,在函数调用时,如某默认参数要指明一个特定值,则有(A )A.其之前全部参数都必须赋值B.其之后全部参数都必须赋值C.其前、后全部参数都必须 赋值D.其前、后全部参数都不必赋值7 .设存在函数int max(int, int)返回两参数中较大值,假设求22, 59, 70三者中最大 值,以下表达式不正确的

3、选项是(C )A. int m = max(22, max(59, 70); B. int m = max(max(22, 59), 70); C. int m = max (22, 59, 70);D. int m = max(59, max(22, 70);8 .以下哪个类型函数不合适声明为内联函数(A )A,函数体语句较多B.函数体语句较少C.函数执行时间较短D,函数执行时间过长9 . int Func (int, int);不可与以下哪个函数构成重载(B )A. int Func(int, int, int); B. double Func(int, int);C. double Fu

4、nc(double, double); D. double Func(int, double);说明:不能以形参名来区分函数;不能以函数返回值来区分函数。必须是形参的个数或者类型不同才能构成函数重载。10 .对类中声明的变量,以下描述中正确的选项是(C )A,属于全局变量B.只属于该粪口,量于该类,某些情况下也可被该类不同嚇脚共享D.任何情况下都可被该类全部实例共享11 .类的私有成员可在哪里访问(D )A,通过子类的对象访问B,本类及子类的成员函数中C.通过该类对象访问D.本类的成员函数中12 .如果没有为个类定义任何构造函数的情况下,以下描述正确的选项是(A )A.编译器总是自动创立一个不

5、带参数的构造函数B.这个类没有构造函数C.这个类不需要构造函数D.该类不能通过编译13. 个类可包含析构函数的个数是(B )A. 0个 B. 1个C.至少个D. 个或多个14. this指针存在的目的是(B )A.保证基类公有成员在子类中可以被访问B.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码C.保证基类爱护成员在子类中可以被访问D.保证基类私有成员在子类中可以被访问15 .以下关于类的权限的描述错误的选项是(A )A.类本身的成员函数只能访问自身的私有成员B.类的对象只能访问该类的公有成员C, 一般函数不能直接访问类的公有成员,必须通过对象访问D. 个类可以将另个类的 对象

6、作为成员16 .在编译指令中,宏定义使用哪个指令(B )A. include B. define C. if D. else17 .设类A将其它类对象作为成员,则建立A类对象时,以下描述正确的选项是(B )A. A类构造函数先执行B.成员构造函数先执行C.两者并行执行D.不能确定类的组合,描述的是个类内嵌其他类的对象作为成员的情况,它们之间的关系是种包含 与被包含的关系。在声明一个组合类的对象时,不仅它自身的构造函数将被调用,而且还将调用其内嵌对象的 构造函数。这时构造函数的调用顺序是:(1)按照内嵌对象在组合类的声明中出现的次序,依次调用内嵌对象的构造函数;(2)执行本类构造函数的函数体析构

7、函数的调用执行顺序与构造函数刚好相反。18 .以下描述错误的选项是(A )A.在创立对象前,静态成员不存在B.静态成员是类的成员C,静态成员不能是虚函数D.静态成员函数不能直接访问非静态成员说明:静态成员函数可以直接访问该类的静态数据和函数成员,而访问非静态成员,必须通 过参数传递方法得到对象名,然后通过对象名来访问。19 .对于友元描述正确的选项是(B )A.友元是本类的成员函数B.友元不是本类的成员函数C.友元不是函数D.友元不能访问 本类私有成员20 .在哪种派生方法中,派生类可以访问基类中的protected成员(B )A. public 和 private B. public 和 p

8、rotectedC. protected 和 privateD. 仅 protected二、填空题(本大题共20小题,每题1分,共20分)请在每题的空格中填上正确答案。错填、不填均无分。21 .设要把个文件输出流对象myFile与文件f: myText. txt相关联,所用的C+语句 是:myFile. open( f :myText. txt);。22 . C+中ostream类的直接基类是边类。23 .运算符只能用成员运算符来重载,不能用友元运算符来重载。24 .定义虚函数所用的关键字是virtual。25. vector类中用于返回向量中第1个对象的方 法是 front ( ) 26 .

9、在C+中,利用向量类模板定义一个具有20个char的向量E,其元素均被置为字符 t,完成此操作的语句是vectorcharE(20, t)。27 .类的继承是指子类继承基类的数据成员和成员函数。28 .不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为多态性或(类 的多态性)。29 .迄也运指令指示编译器将一个源文件嵌入到带该指令的源文件之中。30 .设类A有成员函数void Fun(void);假设要定义个指向类成员函数的指针变量pafn来指向Fun,该指针变量的声明语句是: void(A:Xpafn)(void);。31 .设在程序中使用如下语句申请了一个对象数组:Point

10、 X ptr = new Point2;则在需要释放ptr指向的动态数组对象时,所使用的语句是de在te ptr;。32 .在爱护派生中,基类权限为Private的成员在派生类中不可访问。33 .类A有如下成员函数int A:fun(double x)return (int) x / 2; int A:fun(int x)return xX2; 设a为类A的对象,在主函数中有int s=a. fun (6. 0)+a. fun(2),则执行该语句后,s的值 为。34 .对象传送的消息一般由3局部组成:接收对象名、调用操作名和必要的参数。35 .将指向对象的指针作为函数参数,形参是对象指针,实参

11、是对象的地址值。36 .在使用string类的find成员函数来检索主串中是否含有指定的子串时,假设在主串中 不含指定的子串,find函数的返回值是,。37 .在C+中,声明布尔类型变量所用的关键字是b。的。38 .执行以下代码int a=29, b=100;cout setw (3) a b endl;程序的输出结果是:29100 39 .执行以下代码cout Hex: hex 255;程序的输出结果为Hex:ff 40 . C+言语中可以完成输出个换行符并刷新流功能的操控符是endl三、改错题(本大题共5小题,每题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改

12、意见。41 . includevoid main( ) int x=5, y=6; const int X p=&x;Xp二 y; coutclass fprivate: int x, y;public: f1( )x=0; y二; print ( ) coutx,f yendl; uvoid main( ) f a;1);a. print ();)a. fl (1,1); fl ()调用时实参与形参数量不一致43 . includeclass fprivate: int x=0, y=0;public: void fl (int a, int b)x=a; y二b; void get( )

13、coutx class pointprivate: float x;public: void f(float a)x=a;void f( )x=0;friend float max(pointa, pointb););float max(pointa, pointb)return(a. xb. x) a. x: b. x; void main( ) point a, b;a. f(2. 2); b. f(3. 3);couta. max (a, b);couta. max (a, b); max ()不是类的成员函数,不能用a. max ()方法调用45 . include templatec

14、lass fprivate: T x, y;public: void fl(T a, T b)x=a; y=b; T max( ) retum(xy)x:y;void main( ) f a;a. fl (1.5, 3. 8);couta, xa. ya. max ( ) endl;couta. xa. ya. max() endl; x, y是私有类型,不能在主函数中直接使用四、完成程序题(本大题共5小题,每题4分,共20分)46 .完成下面类中的成员函数的定义。class point(private:int m, n;public:point(int, int);point(point&)

15、; point:point(int a, int b) m=a; n =b;)point:point(point&t )(m=t. m;n=t. n;)47 .下面是个输入半径,输出其面积和周长的C+程序,在下划线处填上正确的语句。 includeusing namespace std;const double pi=3.14159;void main()(double r;cout r=;cinr ;double 1=2.OXpiXr;double s=piXrXr;cout n The long is: lendl; cout The area is: sendl;48 .在下划线处填上缺

16、少的局部。includeincludefstreamusing namespace std;class complex(public:int real;int imag;complex(int r二, int i=0)(real=r;imag=i;);complex operator+( complex&a complexb)(int r=a. real+b. real;int i=a. imag+b. imag;return complex(r, i);)complex x(1, 2), y(3, 4), z;z=x+y;coutz. real + z. imag i endl;49 .程序

17、的输出结果如下:1, 950, 30请依据输出数据在下面程序中的下划线处填写正确的语句。源程序如下:includeusing namespace std;class base(private:int m;public:base( ) ;base (int a) :m(a) int get( )return m; void set (int a)m=a;baseXptr=new base2;ptr- set (30);ptr= ptr+1;ptr- set (50);base a2 = L 9;couta0. get ( ) , al. get ( ) endl;coutget( ),;ptr=

18、ptr-1;cout ptrget( )endl;delete ptr;)50 .在下面横线处填上求两个浮点数之差的cha函数的原型声明、调用方法。 include using namespace std;void main()float a, b;float cha(float, float); / / 函数 cha 的原型声明a=12. 5 ;b=6. 5;float c- cha(a, b) ;/ /调用函数 chacoutcendl;)float cha(float x, float y)(float w;w=x-y;return w;五、程序分析题(本大题共4小题,每题5分,共20分

19、)51 .给出下面程序的输出结果。include template class SampleT n;public:Sample(T i)n=i;int operator=(Sample &); template int Sample: :operator=(Sample&s) if (n=s. n)return 1;elsereturn 0;)void main()(Samplesl(2), s2 (3);.cout si与s2的数据成员 (sl=s2 相等:“不相等) endl;Samples3(2.5), s4 (2. 5);cout s3与s4的数据成员 (s3=s4 相等:不相等) e

20、ndl;)S1与S2的数据成员不相等S3与S4数据成员相等52 .给出下面程序的输出结果。includeiostreamusing namespace std;templateT max(T ml, T m2) return(mlm2)ml:m2:void main( )coutmax(l, 7) 、t max (2.0, 5.0)endl;coutmax(1 y J b t max( A , a )endl;75y a53 .给出下面程序的输出结果include using namespace std;class A public:int x;A( ) A(int a) x=a;int ge

21、t (int a)return x+a; );void main( )A a (8);int(A:Xp)(int);p=A:get;cout(a. Xp)(5)XP) (7)endl; 54 .给出下面程序的输出结果。includeincludeusing namespace std;class Book charXtitle; charXauthor; int numsold;public:Book( ) Book(const charXstrl, const charXstr2, const int num) int len=strlen(strl);title=new charlen+1

22、;strcpy(title, strl);len=strlen(str2);author=new charlen+1;strcpy(author, str2);numsold=num; void setbook (const charXstrl, const charXstr2, const int num)int len=strlen(strl);title=new charlen+1;strcpy(title, strl);len=strlen(str2); author=new charlen+1;strcpy(author, str2); numsold=num;考证素材 Book(

23、)delete title; delete author; ) void print(ostream&output) output书名:titleendl; output authorendl;output月销售量:numsoldendl; ) ;书名:数据结构 严蔚敏月销售量:200 书名:C+程序设计作业:李春葆void main( )Book objl(数据结构,严蔚敏,200), obj2; objl.print(cout); obj2. setbook( C+言语程序设计,李春葆,210); obj2.print(cout); ) 六、程序设计题(本大题共1小题,共10分)55 .在

24、三角形类TRI完成两个函数,功能是输入三个顶点坐标推断是否构成三角形 include include class point private: float x, y; public: point (float a, float b)x二a;y=b; point( )x=0; y=0; void set(float a, float b)x=a;y=b; float getx( ) return x;float gety( )return y;);class tripoint x, y, z; float si, s2, s3;public;. settri(. ); /用于输入三个顶点坐标.

25、test(. ); /用于推断是否构成三角形:请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)推断三条边能构成三角形的条件:任意两边之和大于第三边或任意两边之差小于第3边。void tri:settri(float xl, float yl, float x2, float y2, float x3, float y3)x. set (xl, yl); y. set (x2, y2) ; z. set(x3, y3); void tri:test() s l=sqrt (x. getx () -y. getx () X (x. getx-y. getx) + (x

26、. gety一y. gety()X (x. gety () -y. gety ();s2=sqrt (x. getx () -z. getx () X (x. getx () -z. getx () + (x. gety () -z. gety () X (x. gety () -z. gety ();s3=sqrt (y. getx()-z. getx()X(y. getx()-z. getx() + (y. gety()-z. gety()X(y. gety()-z. gety():自学考试C+程序设计试题课程代码:04737- 单项选择题(本大题共20小题,每题1分,共20分)在每题列出

27、的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多项选择或 未选均无分。1. C+源程序文件扩展名为(A )A. cppB. hC. lib D. obj2 .在C+中使用流进行输入输出,其中专用于从键盘进行输入的流是(B )A. cerrB. cinC. coutD. cfile3 .包含自定义头文件file. h的预处理指令是(D )A. define B. include file, h C. define file, h D. include*file. h*4 .用于标识十六进制前缀或后缀是(D )A.无 B.后缀L或e C.前缀零 D.前缀Ox5 .设存

28、在整型变量int x,则以下句与其它三项含义不同的是(A )A.intX p=&x; B. intp=x; C. int p=x; D. int &p=x;6 .在定义类成员时,为产生封装性,则需使用哪个关键字(D )A. public B. publish C. protected D. private7 .设函数void swap(int&, int&)将交换两形参的值,如两整型变量int a=10; int b=15;则执行swap (a, b)后,a、b值分别为(C )A. 10, 10 B. 10, 15 C. 15, 10 D. 15, 158 .函数默认参数在函数原型中说明,默认

29、参数必须放在参数序列的(C )A.前部 B.中部C.后部D.两端9 .设存在函数int min(int, int)返回两参数中较小值,假设求15, 26, 47三者中最小值,以下表达式中错 误的选项是(B )A.int m=min(min(15, 26), min(15, 47);B.int m=min(15, 26, 47);C. int m=min(15, min(47, 26);D. int m =min(min(47, 26), 16);10.以下函数不能和函数void print (char)构成重载的是(C )A. int print (int); B. void print(ch

30、ar, char);C. int print(char);D. void print(int, int);11 .在以下成对的表达式中,运算结果类型相同的一对是(D )A. 7/2 和 7. 0/2. 0 B. 7/2. 0 和 7/2/2 和 7/2 / 2.0 和 7.0/212 .内联函数的特点是(A )A.减少代码量,加快访问速度B.减少代码量,减缓访问速度C.增加代码量,减缓访问速度D.增加代码量,加快访问速度13 .类的私有成员可在哪里被访问(A )A.本类的成员函数中 B,本类及子类的成员函数中C.通过对象名在任何位置D.不可访问14 .类的构造函数在以下什么情况下会被自动调用(

31、B )A,定义成员函数时B.定义对象时C.定义数据成员时D,定义友元函数时15 .以下关于析构函数描述正确的选项是(D )A.可以重载 B.函数体中必须有delete语句C.返回类型必须是void类型D,不能指定返回类型16 .设有函数T Sum(T X, T y) return x+y; ,其中T为模板类型,则以下语句中对该函数错误的使用是(D )A. Sum(l, 2); B. Sum (3.0, 2. 2); C.Sum( (K , 七); D. Sum(A, C);17 .以下哪个编译指令属于条件编译指令(C )A. include B. define C. else D. pragm

32、a18 .关于类的静态成员函数描述错误的选项是(A )A.在创立对象前不存在B.不能说明为虚函数C,不能直接访问非静态函数D.不是对象的成员19 .如果类A被声明成类B的友元,则(D )A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不肯定是类A的友元20 .派生类的对象可以访问以下那种情况继承的基类成员(D )A.私有继承的私有成员B.公有继承的私有成员C.私有继承的爱护成员D.公有继承的公有成员二、填空题(本大题共20小题,每题1分,共20分)请在每题的空格中填上正确答案。错填、不填均无分。21 .假设使用标准输出流把整型变量a的值输出到屏幕

33、上,完成此操作的C+语句是couta;。22 . C+将数据从个对象流向另个对象的流动抽象为“流”,从流中猎取数据的操作称为提取23 .执行以下代码int b=100;coutHex: hexb;程序的输出结果是Hex: 64=24 .静态联编所支持的多态性称为编译时 的多态性。25 . C+程序必须有且只有一个主函数,其函数名为_main。26 .写出声明一个复数对象的语句,并使该对象被初始化为2.2+1. 3i,此声明语句是complex double)c (2. 2,1. 3);27 .假设有函数定义为:int add(int ml=0, int m2=2, int m3-4)retur

34、n ml+m2+m3; 在主函数中有 int s=add(l)+add(O, l)+add(0, 1, 2);则执行此语句后s的值为_1528 . C+中使用inline关键字说明函数为内联函数。29 .在源程序中有宏定义:define PI 3.14,则假设不想使该宏定义影响到程序的其它地方,可以使用一undefPI 删除该宏定义。(注:配套教材上没有)30 .类和其它数据类型不同的是,组成这种类型的不仅可以有数据,还可以有对数据进行操作的函数=31 .有以下代码 int a=0; double b=0; cinab!当用键盘输入 1. 25 时,b=_0. 25。32 .对于类Point而

35、言,其析构函数的定义原型为Point ();33 .对象成员构造函数的调用顺序取决于这些对象在类中说明的顺序,与它们在成员初始化列表中给出的顺序 一无关。34 .类的简单成员函数是指声明中不含一const volatile, static关键字的函数。35 .与操作对象的数据类型相互独立的算法称为_范型算法一36 .从个或多个以前定义的类产生新类的过程称为一派生37 .在vector类中向向量尾部插入一个对象的方法是_push_back(),38 . C+中用于动态创立对象,并返回该对象的指针的关键字是new39 . C+的流类库预定义的与标准输出设备相联接的流是cout 一40 .执行以下代

36、码coutnoshowpoint123.0;程序输出结果是123三、改错题(本大题共5小题,每题2分,共10分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。41.includeclass fprivate: float x, y;public: f(float a, float b)x=a; y=b; float max() return (xy)x: y; );main( ) f a(1.5, 3. 8) ; couta. max ( )endl;)42. includeclass testprivate: int x;public: test(int a)x=a; v

37、oid set(int a)x=a; void getO coutxendl; /error缺少分号;main() const test a(3);a. set(5);a. get();43. includeclass pointprivate: float x, y;public: fl(float a, float b)x=a; y=b; point () x=0; y=0; void getxO coutxendl; void getyO coutyendl; );void print (point a) couta. xendl; /error:应将 print 函数说明为 point

38、 类的友元函数 main() point a;a. fl (3.0, 5. 0);print(a);44. includeclass fprivate: int x, y;public: fl(int a, int b)x=a; y=b; void print () coutxyendl; 5main() f a;a. fl (1.5, 1.8); /error:实际参数类型与fl函数的形参类型不一致,应修改为一致。 a. print ();45. includeiostream. hmain() int x=6;const intXp=x; /error: 应改为 const intXp=&

39、x;coutXpendl;四、完成程序题(本大题共5小题,每题4分,共20分)46. 完成下面程序,使其输出10,并在退出运行时正确释放分配给指针的存储空间。 include using namespace std;void main()(int Xa, Xp;a=new int(10);P= _a;coutXpendl;delete p;(或 delete a;) )47. include using namespace std;class base(private:int x;public:base(int a)x=a;int get()return x;void showbase()co

40、utx=”xendl;);class Derived:public base private:int y;public:Derived(int a, int b):base(a)y=b; void showderived()coutx=get (), y=yendl;;void mainObase b(3);Derived d(6, 7);b. showbase ();d. showderived ();b=d;b. showbase ();Derived bl(d);(或 Derived bl (6, 7); 或 base bl (6);或 base bl (d);) bl. showbas

41、e ();baseX pb=&bl;pb-showbase();d. showderived ();b. showbase ();输出结果如下:x=3x=6, y=7x=6x=6x=6x=6, y=7x=648 .下面程序的运行结果如下:B: : display ()C: : display ()在下划线处填上缺少的局部。源程序如下:includeusing namespace std;class B public:virtual void display( ) cout B: display( ) *endl; ;class C:public B (public:virtual void (

42、或 void) display () coutC: : display () endl;);void fun(BXp) (p-display ();)void mainO (B b, Xpb;C c;pb=&b;fun(pb);pb=&c;fun(pb);)49 .下面程序的运行结果如下:This is linelThis is line2This is line3在下划线处填上缺少的局部。源程序如下: include include using namespace std;void mainO (fstream fin, fout;fout. open(my. txt, ios:out);if (! fout. is_open () return;for(int i=0;i3;i=i+l)foutThis is linei+

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁