自考C++程序设计2011年1月试题

自考 责任编辑:彭雅倩 2020-03-30

摘要:自考C++程序设计2011年1月试题及答案解析,该试卷为自考C++程序设计历年真题试卷,包含答案及详细解析。

自考C++程序设计2011年1月试题及答案解析

自考C++程序设计2011年1月试题及答案解析,该试卷为自考C++程序设计历年真题试卷,包含答案及详细解析。

一、单项选择题(本大题共20小题,每小题1分,共20分。)在每小题列出的备选项中只有一项是最符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均不得分。

1.在哪种派生方式中,派生类可以访问基类中的protected成员(  )

A.public和private
B.public和protected
C.protected和private
D.仅protected

2.对C++语言和C语言的兼容性,描述正确的是(  )

A.C++兼容C
B.C++部分兼容C
C.C++不兼容C
D.C兼容C++

3.在C++中使用流进行输入输出,其中用于屏幕输出的对象是(  )

A.cerr
B.cin
C.cout
D.cfile

4.对使用关键字new所开辟的动态存储空间,释放时必须使用(  )

A.free
B.create
C.delete
D.realse

5.如没有使用private关键字定义类的数据成员,则默认为(  )

A.private
B.public
C.protected
D.friend

6.使用值传递方式将实参传给形参,下列说法正确的是(  )

A.形参是实参的备份
B.实参是形参的备份
C.形参和实参是同一对象
D.形参和实参无联系

7.在函数调用时,如某一默认参数要指明一个特定值,则有(  )

A.其之前所有参数都必须赋值
B.其之后所有参数都必须赋值
C.其前、后所有参数都必须赋值
D.其前、后所有参数都不必赋值

8.设存在函数int max(int, int)返回两参数中较大值,若求22,59,70三者中最大值,下列表达式不正确的是(  )

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));

9.下列哪个类型函数不适合声明为内联函数(  )

A.函数体语句较多
B.函数体语句较少
C.函数执行时间较短
D.函数执行时间过长

10.int Func(int,int);不可与下列哪个函数构成重载(  )

A.int Func(int,int,int);
B.double Func(int,int);
C.double Func(double,double);
D.double Func(int,double);

11.对类中声明的变量,下列描述中正确的是(  )

A.属于全局变量
B.只属于该类
C.属于该类,某些情况下也可被该类不同实例所共享
D.任何情况下都可被该类所有实例共享

12.类的私有成员可在何处访问(  )

A.通过子类的对象访问
B.本类及子类的成员函数中
C.通过该类对象访问
D.本类的成员函数中

13.如果没有为一个类定义任何构造函数的情况下,下列描述正确的是(  )

A.编译器总是自动创建一个不带参数的构造函数
B.这个类没有构造函数
C.这个类不需要构造函数
D.该类不能通过编译

14.一个类可包含析构函数的个数是(  )

A.0个
B.1个
C.至少一个
D.0个或多个

15.this指针存在的目的是(  )

A.保证基类公有成员在子类中可以被访问
B.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码
C.保证基类保护成员在子类中可以被访问
D.保证基类私有成员在子类中可以被访问

16.下列关于类的权限的描述错误的是(  )

A.类本身的成员函数只能访问自身的私有成员
B.类的对象只能访问该类的公有成员
C.普通函数不能直接访问类的公有成员,必须通过对象访问
D.一个类可以将另一个类的对象作为成员

17.在编译指令中,宏定义使用哪个指令(  )

A.#include
B.#define
C.#if
D.#else

18.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是(  )

A.A类构造函数先执行
B.成员构造函数先执行
C.两者并行执行
D.不能确定

19.下列描述错误的是(  )

A.在创建对象前,静态成员不存在
B.静态成员是类的成员
C.静态成员不能是虚函数
D.静态成员函数不能直接访问非静态成员

20.对于友元描述正确的是(  )

A.友元是本类的成员函数
B.友元不是本类的成员函数
C.友元不是函数
D.友元不能访问本类私有成员

二、填空题(本大题共20小题,每小题1分,共20分)请在每小题的空格中填上正确答案。错填、不填均无分。

11.设要把一个文件输出流对象myFile与文件“f:myText.txt”相关联,所用的C++语句是:_________。

12.C++中ostream类的直接基类是_________。

13.运算符[ ]只能用_________运算符来重载,不能用友元运算符来重载。

14.定义虚函数所用的关键字是_________。

15.vector类中用于返回向量中第1个对象的方法是_________。

16.在C++中,利用向量类模板定义一个具有20个char的向量E,其元素均被置为字符 "t",实现此操作的语句是_________。

17.类的继承是指子类继承基类的_________和成员函数。

18.不同对象可以调用相同名称的函数,但可导致完全不同的行为的现象称为_________。

19._________指令指示编译器将一个源文件嵌入到带该指令的源文件之中。

110.设类A有成员函数 void Fun(void); 要定义一个指向类成员函数的指针变量pafn来指向Fun,该指针变量的声明语句是_________。

111.设在程序中使用如下语句申请了一个对象数组: Point*ptr=new Point[2]; 则在需要释放ptr指向的动态数组对象时,所使用的语句是_________。

112.在保护派生中,基类权限为Private的成员在派生类中_________。

113.类A有如下成员函数 int A:: fun(double x){return(int)x/2;} int A:: fun(int x){return x*2;} 设a为类A的对象,在主函数中有int s=a.fun( 6.0)+a.fun(2),则执行该语句后,s值为_________。

114.对象传送的消息一般由3部分组成:接收对象名、调用操作名和_________。

115.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的_________。

116.在使用string类的find成员函数来检索主串中是否含有指定的子串时,若在主串中不 含指定的子串,find函数的返回值是_________。

117.在C++中,声明布尔类型变量所用的关键字是_________。

118.执行下列代码 int a=29,b=100; cout﹤﹤setw(3)﹤﹤a﹤﹤b﹤﹤endl; 程序的输出结果是:_________。

119.执行下列代码 cout﹤﹤"Hex:"﹤﹤hex﹤﹤255; 程序的输出结果为_________。

120.C++语言中可以实现输出一个换行符并刷新流功能的操控符是_________。

三、改错题(本大题共5小题,每小题2分,共10分)

21.#include﹤iostream.h﹥main( ){int x=5,y=6;const int*p=&x;*p=y;cout﹤﹤*p﹤﹤endl;}

22.#include﹤iostream.h﹥class f{private: int x,y;public: f1( ){x=0;y=0;}print( ){cout﹤﹤x﹤﹤', '﹤﹤y﹤﹤endl;}}main( ){f a;a.f1(1,1);a.print( );}

23.#include﹤iostream.h﹥class f{private: int x=0,y=0;public: void f1(int a, int b){x=a;y=b;}void get( ){cout﹤﹤x﹤﹤','﹤﹤y﹤﹤endl;}};main( ){f a;a.f1(1,3);a.get( );}

24.#include﹤iostream.h﹥class point{private:float x;public:void f(float a){x=a;}void f( ){x=0;}friend float max(point& a,point& b);};float max(point& a, point& b){return(a.x﹥b.x)?a.x: b.x;}main( ){point a,b;a.f( 2.2);b.f( 3.3);cout﹤﹤a.max(a,b);}

25.#include ﹤iostream.h﹥template ﹤class T﹥class f{private: T x,y;public:void fl(T a,T b){x=a;y=b;}T max( ){return(x﹥y)?x:y;}};main( ){f a;a.f1( 1.5, 3.8);cout﹤﹤a.x﹤﹤a.y﹤﹤a.max( )﹤﹤endl;}

四、完成程序题(本大题共5小题,每小题4分,共20分)

31.完成下面类中的成员函数的定义。class point{private:int m,n;public:point(int,int);point(point&);};point:: point(int a,int b){m=a;_________=b;}point:: point(_________){m=t.m;n=t.n;}

32.下面是一个输入半径,输出其面积和周长的C++程序,在下划线处填上正确的语句。#include ﹤iostream﹥using namespace std;_________pi= 3.14159;void main( ){double r;cout﹤﹤"r="; _________;double l= 2.0*pi*r;double s=pi*r*r;cout﹤﹤" The long is:"﹤﹤l﹤﹤endl;cout﹤﹤"The area is:"﹤﹤s﹤﹤endl;}

33.在下划线处填上缺少的部分。#include﹤iostream﹥#include﹤fstream﹥using namespace std;class complex{public:int real;int imag;complex(int r=0,int i=0){real=r;imag=i;}};complex operator+(_________, complex& b){int r=a.real+b.real;int i=a.imag+b.imag;return_________;}void main( ){complex x(1,2),y(3,4),z; z=x+y;cout﹤﹤z.real﹤﹤"+"﹤﹤z.imag﹤﹤"i"﹤﹤endl;}

34.程序的输出结果如下:1、950、30请根据输出数据在下面程序中的下划线处填写正确的语句。源程序如下:#include ﹤iostream﹥using namespace std;class base {private:int m;public:base( ){ };base(int a):m(a){ }int get( ){return m;}void set(int a){m=a;}};void main( ){base*ptr=new base[2]; ptr-﹥set(30);ptr= _________;ptr-﹥set(50);base a[2]={1,9};cout﹤﹤a[0].get( )﹤﹤","﹤﹤a[1].get( )﹤﹤endl;cout﹤﹤ptr-﹥get( )﹤﹤","; ptr=ptr-1;cout﹤﹤_________﹤﹤endl; delete[ ]ptr;}

35.在下面横线处填上求两个浮点数之差的cha函数的原型声明、调用方法。#include﹤iostream﹥using namespace std;void main( ) {float a,b;________ //函数cha的原型声明a= 12.5;b= 6.5;float c=__________________; //调用函数cha cout﹤﹤c﹤﹤endl;}float cha(float x, float y){float w;w=x-y;return w;}

五、程序分析题(本大题共4小题,每小题5分,共20分)

41.给出下面程序的输出结果。#include ﹤iostream.h﹥template﹤class T﹥class Sample{T n;public:Sample(T i){n=i;}int operator==(Sample&);};template﹤class T﹥int Sample﹤T﹥::operator==(Sample&s){if(n==s.n) return 1; else return 0;}void main( ) {Sample﹤int﹥s1(2),s2(3);cout﹤﹤"s1与s2的数据成员"﹤﹤(s1==s2?"相等":"不相等")﹤﹤endl;Sample﹤double﹥s3( 2.5),s4( 2.5);cout﹤﹤"s3与s4的数据成员"﹤﹤(s3==s4?"相等":"不相等")﹤﹤endl;}

42.给出下面程序的输出结果。#include﹤iostream﹥using namespace std;template﹤class T﹥T max(T m1,T m2){return(ml﹥m2)?m1:m2;}void main( ) {cout﹤﹤max(1,7)﹤﹤" "﹤﹤max( 2.0, 5.0)﹤﹤endl;cout﹤﹤max('y','b')﹤﹤" "﹤﹤max("A","a")﹤﹤endl;}

43.给出下面程序的输出结果#include﹤iostream﹥using namespace std;class A {public:int x;A( ){ }A(int a){x=a;}int get(int a){return x+a;}};void main( ) {A a(8);int(A:: *p)(int);p=A:: get;cout﹤﹤(a.*p)(5)﹤﹤endl;A*pi=&a;cout﹤﹤(pi-﹥*p)(7)﹤﹤endl;}

44.给出下面程序的输出结果。#include ﹤iostream﹥#include ﹤string﹥using namespace std;class Book {char*title; char*author;int numsold;public:Book( ){ }Book(const char*str1, const char*str2, const int num) {int len=strlen(str1);title=new char[1en+1];strcpy(title, strl);len=strlen(str2);author=new char[1en+1];strcpy(author, str2);numsold=num; }void sethook(const char * strl, const char * str2, const int num) {int len=strlen(strl);title=new char[1en+1];strcpy(title, strl);len=strlen(str2);author=new char[1en+1];strcpy(author, str2);numsold=num;}~Book( ) {delete title;delete author;}void print(ostream& output) {output﹤﹤"书名:"﹤﹤title﹤﹤endl;output﹤﹤"作者:"﹤﹤author﹤﹤endl;output﹤﹤"月销售量:"﹤﹤numsold﹤﹤endl; }};void main( ) {Book obj1("数据结构","严蔚敏",200),obj2;obj 1.print(cout);obj 2.setbook("C++语言程序设计","李春葆",210);obj 2.print(cout);}

六、程序设计题(本大题共1小题,共10分)

51.在三角形类TRI实现两个函数,功能是输入三个顶点坐标判断是否构成三角形 #include ﹤iostream.h﹥#include ﹤math.h﹥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 tri { point x, y, z; float s1, s2, s3;public: ....settri(....); //用于输入三个顶点坐标....test(....); //用于判断是否构成三角形};请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)

更多资料
更多课程
更多真题
温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

自考备考资料免费领取

去领取

距离2024 自考考试

还有
  • 1
  • 7
  • 5
自考报名

每年3月、8月

领准考证

考前7天

考试信息

每年4月、10月

成绩查询

考后45天

专注在线职业教育23年

项目管理

信息系统项目管理师

厂商认证

信息系统项目管理师

信息系统项目管理师