违法信息举报 客服热线:400-118-7898
广告
?
专接本栏目测试广告

​自考C++程序设计2016年4月试题

自考 责任编辑:彭雅倩 2019-06-24

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

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

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

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

1.要求指针p既不可修改其本身的内容,也不可修改其所指向地址的内容,定义正确的(  )

A.const char *p="ABCD";
B.char *const p="ABCD";
C.char const *p="ABCD";
D.const char * const p="ABCD";

2.在C++中,类与类之间的继承关系具有(  )

A.自反性
B.对称性
C.传递性
D.反对称性

3.下列关于对静态数据成员的描述中,正确的是(  )

A.静态数据成员不能用 public控制符修饰
B.静态数据成员可以直接用类名或者对象名来调用
C.静态数据成员不可以被类的对象调用
D.静态数据成员不能用 private控制符修饰

4.适宜采用inline定义函数情况是(  )

A.函数体含有循环语句
B.函数体含有递归语句
C.函数代码多、不常调用
D.函数代码少、频繁调用

5.通常拷贝构造函数的参数是(  )

A.某个对象的成员名
B.某个对象的指针名
C.某个对象的引用名
D.某个对象名

6.下列不是类的成员函数的(  )

A.友元函数
B.构造函数
C.析构函数
D.拷贝构造函数

7.类Cat是类Animal的公有派生类,类Animal和类Cat中都定义了虚函数func( ),p是一个指向类Animal对象的指针,则p-﹥Animal:: func( )将(  )

A.调用类Animal中的函数func( )
B.调用类Cat中的函数func( )
C.根据p所指的对象类型而确定调用类Animal中或类Cat中的函数func( )
D.既调用类 Animal中函数,也调用类Cat中的函数

8.如果表达式++a中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为(  )

A.operator ++(1)
B.operator ++(a)
C.operator ++(a, 1)
D.operator ++( )

9.实现两个相同类型数加法的函数模板的声明是(  )

A.add(T x, T y)
B.T add(x, y)
C.T add(T x, y)
D.T add(T x,T y)

10.以下基类中的成员函数表示纯虚函数的是(  )

A.virtual void vf(int)
B.void vf(int)=0
C.virtual void vf( )=0
D.virtual void yf( int) { }

11.假定一个类的构造函数为A(int aa, int bb) { a=aa++; b=a*++bb;},则执行A x(4,5);语句后,x.a和x.b的值分别为(  )

A.4和5
B.4和20
C.4和24
D.20和5

12.下列运算符中,在C++语言中不能重载的是(  )

A.*
B.﹥=
C.::
D./

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

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

14.以下能正确定义数组并正确赋初值的语句是(  )

A.int N=5, b[N][N];
B.int a[2]={{1},{3},{4},{5}};
C.int c[2][ ]={{1,2},{3,4}};
D.int d[3][2]={{1,2},{3,4}};

15.关于函数模板,描述错误的是(  )

A.函数模板必须由程序员实例化为可执行的函数模板;
B.函数模板的实例化由编译器实现;
C.一个类定义中,只要有一个函数模板,则这个类是类模板;
D.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化;

16.按照标识符的要求,不能组成标识符的是(  )

A.连接符
B.下划线
C.大小写字母
D.数字字母

17.已知类A是类B的友元,类B是类C的友元,则(  )

A.类A一定是类C的友元
B.类C一定是类A的友元
C.类C的成员函数可以访问类B的对象的任何成员
D.类A的成员函数可以访问类B的对象的任何成员

18.已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5,正确的是(  )

A.A 1.p=5;
B.A1-﹥p=5;
C.A 1.*p=5;
D.*A1.p=5;

19.关于this指针的说法错误的是(  )

A.this指针必须显式声明
B.当创建一个对象后,this指针就指向该对象
C.动态成员函数拥有this指针
D.静态成员函数不拥有this指针

20.已知:fun( )函数是一个类的常成员函数,它无返回值,下列表示中,是正确的是(  )

A.void func( ) const;
B.const void func( );
C.void const func( );
D.void func( const);

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

11._________通常使用对象的引用来初始化创建中的对象。

12.抽象类中至少要有一个_________函数。

13.vector类中用于删除向量中的所有对象的函数是_________。

14.重载的运算符保持其原有的操作数、_________和结合性不变。

15.执行下列代码 string str("NihaoC++"); cout﹤﹤str. substr(5,3); 程序的输出结果是_________。

16.C++中有两种继承:单一继承和_________。

17.C++支持两种多态性:_________时的多态性和运行时的多态性。

18.在用class定义一个类时,数据成员和成员函数的默认访问权限是_________。

19.C++流库预定义了4个流,它们分别是cin、cout、clog和_________。

110.在C++中,有两种给出注释的方法。一种是沿用C语言的注释符,即/**/。另一种是从它开始,直到它所在行尾的字符都为注释的注释符,即_________。

111.使用new为int数组动态分配10个存储空间是_________。

112.假设int a=1, b=2; 则表达式(++a/b)*b--的值为_________。

113.C++程序的源文件扩展名为_________。

114.语句序列 fstream infile; infile. open("data. dat"); 的功能可用一个语句实现,这个语句是_________。

115.已知有20个元素int类型向量V1,若用Ⅵ1初始化为V2向量,语句是_________。

116.为了避免可能出现的歧义,C++对if…else语句配对规则规定为:else总是与_________配对。

117.C++程序的编译是以_________为单位进行的。

118.重载函数在参数类型或参数个数上不同,但_________必须相同。

119.举出C++中两种代码复用的方式:_________、复用。

120.下面程序运行的结果是_________。#include ﹤iostream. h﹥void main( ) {cout. fill('*');cout. width(6);cout ﹤﹤"hello"﹤﹤ endl;cout. clear( ); }

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

21.#include ﹤iostream﹥#include ﹤string﹥using namespace std;class Base{public:Base(const char *na){strcpy( name, na); }private:char name [80];};class Derived: public Base{ public:Derived( const char *nm): Base(nm) { }void show( );};void Derived: :show( ){ cout﹤﹤"name:"﹤﹤name﹤﹤endl;}void main( ){ Derived b1("B");b 1. show( );}

22.#include ﹤iostream﹥using namespace std;void setzero( int &a) {a=0;}int main( ) {int x1=10; x2=20;setzero(x1);etzero(x2);cout ﹤﹤x1 ﹤﹤x2 ﹤﹤endl;return 0;}

23.#include ﹤iostream﹥using namespace std;int main( ) {int a= 10;int *p1=NULL;int *p2=a;cout ﹤﹤p1﹤﹤*p2﹤﹤endl;return 0;}

24.#include ﹤iostream﹥using namespace std;void main( ){int x1(3), x2(8);int * const p =&x1;cout ﹤﹤*p﹤﹤ endl;p=&x2;cout ﹤﹤*p﹤﹤ endl;}

25.#include ﹤iostream﹥using namespace std;class INTEGER{public:INTEGER(int a){ this -﹥a=a; }protected:int a; friend void Print( const INTEGER& obj);};void INTEGER:: Print( const INTEGER & obj){cout ﹤﹤ obj. a;}void main( ){INTEGER obj(4);Print(obj);}

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

31.完成下面类中成员函数的定义。#include ﹤iostream﹥#include ﹤string﹥using namespace std;class str{ private:char * st;public:str(char *a){set (a);} _________ //运算符“=”重载函数{delete st; set(a.st);return * this;}void show( ){cout ﹤﹤ st ﹤﹤ endl; }~str( ) { delete st; }void set(char *s);{_________ strcpy( st, s);}};void main( );{str s1("hello"),s2("world");s 1. show( ),s 2.show( );s2=s1;s 1. show( ),s 2.show( );}

32.Test_Static类内有一静态成员变量num,且初始值设为15。#include ﹤iostream﹥using namespace std;class Test_Static{private: _________public:Test_Static(int); void print( );}; _________Test_Static:: Test_Static(int n){num=n;}void Test_Static:: print( ){cout﹤﹤num﹤﹤endl;}void main( ){Test_Static ts(10); ts.print( );}

33.任意输入10个同学的成绩,计算其平均成绩。要求用函数average( )计算平均成绩。主函数输入数据并输出结果。#include "stdafx.h"#include ﹤iostream﹥using namespace std;void main(void){float average(float a[ ]);float score[10];for( _________ ){cin﹥﹥score[i];}cout ﹤﹤"average: "﹤﹤ average( score)﹤﹤endl;}float average( float a[ ]){float sum =0;for( int i=0; i﹤10; i ++){_________}return (sum/10);}

34.下面程序中Base是抽象类。请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为: Der1 called!Der2 called!#include ﹤ iostream. h﹥class Base{ public:_________;};class Der1: public Base{ public:void display( ) { cout ﹤﹤"Der1 called! "﹤﹤endl; }};class Der2: public Base{ public:void display( ) { cout ﹤﹤"Der2 called! "﹤﹤endl; }};void fun( _________ ){ p-﹥display( ); }void main( ){ Der1 b1;Der2 b2;Base * p=&b1;fun(p);p=&b2;fun(p);}

35.#include ﹤iostream﹥using namespace std;int a[ ]={2,4,6,7,10};int &index( int i){ retum a[i]; }void main( ) {int i;_________ //调用 index函数,将数组a中的元素7替换为8for( _________ ) //输出数组acout﹤﹤a[i]﹤﹤" ";}

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

41.#include ﹤iostream﹥using namespace std;class CBase{public:void fun( );};void CBase:: fun( ){cout﹤﹤"调用基类类的函数fun( ) "; }class CDerived:public CBase{ public: void fun( );};void CDerived:: fun( ){ cout﹤﹤"调用派生类的函数fun( ) ”;}void main( ){CDerived d1;CBase *pd=&d1;CBase &pd=d1;d 1. fun( );pb-﹥fun( );pd.fun( );}

42.#include ﹤iostream﹥#include ﹤strinh﹥#include ﹤iomanip﹥using namespace std;class student{char name[ 8];int deg;char level[7];friend class process; //说明友元类public:student( char na[ ], int d){strcpy(name,na);deg=a;}};class process{public:void trans( student &s){int i=s. deg/10;switch(i){case 9:strcpy(s. level, "优"); break;case 8:stecpy(s. level, "良"); break;case 7:strcpy(s. level, "中"); break;case 6:strcpy(s. level, "及格");break; default:strcpy(s. level, "不及格"); break;}}void show( student &s){ cout ﹤﹤setw(10)﹤﹤s.name﹤﹤setw(4)﹤﹤s. deg﹤﹤ setw(8)﹤﹤s.level﹤﹤ endl; }};void main( ){ student st[ ]={ student("Jack", 78), student ("Lucy",92), student("Lily", 62), student("Tom", 99 )};process p;cout﹤﹤"结果:"﹤﹤"姓名"﹤﹤setw(6)﹤﹤"成绩"﹤﹤sew(8)﹤﹤"等级"﹤﹤endl;for(int i=0; i ﹤4;i++){p. trans(st[i]);p. show(st[i]);}}

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

51.定义一个图形类(figure),其中有保护类型的成员数据:高度(height)和宽度(width),一个公有的构造函数。由该图形类建立两个派生类:矩形类和等腰三角形类。 在每个派生类中都包含一个函数area( ),分别用来计算矩形和等腰三角形的面积。其中,主函数已给出,请完成其他部分的代码。int main( ){triangle tri(2, 3);rectangle rec(2, 3);cout ﹤﹤"The area of triangle is: "﹤﹤ tri. area( )﹤﹤endl; cout ﹤﹤"The area of rectangle is: "﹤﹤rec. area( )﹤﹤ endl; return 0;}

更多资料

00537中国现代文学史第四章 50至70年代文学

2025年4月自考 00159《高级财务会计》 真题及答案解析

15044《马原》名词解释汇总

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

自考备考资料免费领取

去领取