多平台全面支持
方便选课,随时随地学习
下载APP
小程序
希赛网小程序
首页 > 自考 > 习题练习
导航

​自考C++程序设计2018年10月试题

责编:彭雅倩 2019-06-24
自考资料领取

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

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

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

1.若有以下类型标识符定义:char c="c"; int a=4; float f=3.14; double d=1.212; 则表达式C+a/(int)d+f的结果类型是(  )

A.float
B.char
C.int
D.double

2.设x和y均为bool量,则x&&y为真的条件是(  )

A.它们均为真
B.其中一个为真
C.它们均为假
D.其中一个为假

3.拷贝构造函数应该是(  )

A.不带参数的构造函数
B.带有一个参数的构造函数
C.带有两个参数的构造函数
D.缺省构造函数

4.以下说法中正确的是(  )

A.C++程序总是从第一个定义的函数开始执行
B.C++程序总是从main函数开始执行
C.C++中函数必须有返回值
D.C++中函数名必须唯一

5.下列虚基类的声明中,正确的是(  )

A.class virtual B:public A
B.class B:virtual public A
C.class B:public A virtual
D.virtual class B:public A

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

A.函数体语句较多
B.函数体语句较少
C.函数执行时间较短
D.函数被频繁调用

7.以下类模板定义正确的为(  )

A.template﹤class T﹥
B.template﹤class T, class int i﹥
C.template﹤class T, typename T﹥
D.template﹤class T1,T2﹥

8.C++中要实现动态联编,调用虚函数时必须使用(  )

A.基类指针
B.类名
C.派生类指针
D.对象名

9.下列对静态成员的描述中,不正确的是(  )

A.静态成员不属于对象,是类的共享成员
B.静态数据成员要在类外定义和初始化
C.调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
D.非静态成员函数也可以操作静态数据成员

10.下列对派生类的描述中,错误的是(  )

A.一个派生类可以作为另一个派生类的基类
B.派生类至少有一个基类
C.派生类的成员除了它自己的成员外,还包含了它的基类的成员
D.派生类中继承的基类成员的访问权限到派生类保持不变

11.下列函数原型声明语句中,错误的是(  )

A.int f(void);
B.void f(hat);
C.int f(a);
D.void f(double a);

12.如果有int型变量a,则定义指向变量a的指针p正确的写法是(  )

A.int p=&a
B.int * P=&a
C.int&p=*a
D.int*p = a

13.假定指针变量P定义为“int *P=new int(100);”,要释放P所指向的动态内存,应使用语句(  )

A.delete p;
B.delete* p;
C.delete&p;
D.delete[ ]p;

14.假定A为一个类,则执行“A a[3], b(3);”语句时调用该类构造函数的次数为(  )

A.3
B.4
C.5
D.9

15.C++中定义标准输入输出的库为(  )

A.stdio
B.math
C.iostream
D.stdlib

16.允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返函值能取任意类型,这是一个(  )

A.类模板
B.模板类
C.函数模板
D.模板函数

17.下列关于运算符重载的叙述中,正确的是(  )

A.通过运算符重载,可以定义新的运算符
B.有的运算符只能作为成员函数重载
C.若重载运算符+,则相应的运算符函数名是+
D.重载一个二元运算符时,必须声明两个形参

18.当使用ofstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为(  )

A.ios::out | ios::binary
B.ios::in | ios::binary
C.ios::out
D.ios::in

19.有关函数模板和模板函数说法错误的是(  )

A.函数模板只是对函数的描述,编译器不为其产生任何执行代码,所以它不是一个实实在在的函数
B.模板函数是实实在在的函数,它由编译系统在遇到具体函数调用时所生成,并调用执行
C.函数模板需要实例化为模板函数后才能执行
D.当函数模板和一般函数同名时,系统先去匹配函数模板,将其实例化后进行调用

20.对类的构造函数和析构函数描述正确的是(  )

A.构造函数可以重载,析构函数不能重载
B.构造函数不能重载,析构函数可以重载
C.构造函数可以重载,析构函数也可以重载
D.构造函数不能重载,析构函数也不能重载

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

11.将int类型指针p转换为char类型指针,则强制转换语句为_________。

12.当一个成员函数被调用时,该成员函数的_________指向调用它的对象。

13.在_________继承的情况下,基类数据成员在派生类中的访问权限保持不变。

14. Windows环境下,由C++源程序文件编译而成的目标文件的扩展名是_________。

15.具有至少一个纯虚函数的类是_________。

16. C++中字符串是通过字符数组来表示的,每一个字符串都有一个结尾字符_________。

17.C++中定义重载函数时,应至少使重载函数的参数个数或_________不同。

18.假定x=15,则表达式X﹤=10?20:30的值为_________。

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

110.假设类F的对象f是类A的成员对象,则“A a”语句执行时,先调用类_________的构造函数。

111.设"int a=3,b=4,C=5;",表达式“(a+b)﹥c&&b==c”的值是_________。

112.描述命题“A小于8或小于C”的表达式为_________。

113.C++中字符串"a+b=12 "的长度为_________。

114.C++类中构造函数的个数最多是无限个,析构函数的个数最多是_________个。

115.C++的静态数据成员需要在_________进行初始化,可以被该类的所有对象共享。

116.C++中一般的程序都要有两条语句,包含头文件“#include ﹤iostream﹥”语句和使用命名空间“_________”语句。

117.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到没有形参的或缺省参数的_________,否则应用程序会产生一个编译错误。

118.C++中解决命名冲突的机制是_________。

119.拷贝构造函数使_________作为参数初始化创建中的对象。

120.假如一个类的名称为F,使用这个类的一个对象初始化该类的另一个对象时,可以调用_________构造函数来完成此功能。

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

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

22.改正后程序输出结果为2 5 8 11 14#include ﹤iostream. h﹥using namespace std;void main( ){int i=1;while(i﹤=15){i++; if(i%3==2) continue;else cout ﹤﹤1﹤﹤" ";}}

23.#include ﹤iostream. h﹥using namespace std;class Point{public: void init( ) { }static void output( ) { }};void main( ){Point P;Point:: init( );P. output( );}

24.#include ﹤iostream. h﹥using namespace std;class A{int x, y; public: void set(int a, int b){ x=a; y=b;}int getx( ){return x; }int gety( ){return y;}int sum( ){return x+y;}}; int main( ) {A a; a. set(3, 4);cout﹤﹤a.x﹤﹤a.y﹤﹤ a.sum( )﹤﹤ endl;return 0;}

25.申请一个长度为10的int型空间,之后释放该空间。#include ﹤iostream. h﹥using namespace std;int main( ){int *p=new int[ 10];delete p;return 0;}

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

31.把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:xxk1.dat”中。#include ﹤iostream﹥#include ﹤fstream.h﹥#include ﹤stdlib. h﹥void main( ){ofstream fout("a: xxk1.dat");if( _____________ ) {cout﹤﹤"文件没有打开!"﹤﹤end;exit(1);}int x; cin﹥﹥x;while(x! =-1){fout ﹤﹤x﹤﹤' ';cin ﹥﹥x;}_____________; //关闭文件}

32.#include ﹤iostream. h﹥using namespace std;_____________;_____________;{T tmp =x*x+y*y+x*y; return tmp;}int main( ){int x1=1, y1 =4;float x2=1.1, y2=2.2;double x3=2.0, y3=3.1;cout﹤﹤fun(x1, y1)﹤﹤endl;cout ﹤﹤fun(x2, y2)﹤﹤endl;cout ﹤﹤fun(x3, y3)﹤﹤ endl;return 0;}

33.完成程序,使其输出结果为79#include ﹤iostream. h﹥using namespace std;int main( ){int a[6]={23,15,64,33,40,58};_____________;s1=s2=a[0];for(int *p=a+1; p﹤a+6; p++) {if(s1﹥*p) s1=*p;if _____________;}cout ﹤﹤s1 +s2 ﹤﹤endl;return 0;}

34.#include ﹤iostream.h﹥class Point{int X,Y;public:Point(int x=0, int y=0){ X=x; Y=y; Countp ++;}Point( point &p){X=p. X; Y=p.Y; }~Point( ){ Countp--; }_____________;static int Countp; void display( ){ cout ﹤﹤X﹤﹤", "﹤﹤Y﹤﹤", "; }};Point myfun( Point p1, Point p2, Point p3){ Point tmp(p1. X+p2. X+P3. X, p1. Y+p2.Y+p3. Y);return tmp;}int Point:: Countp =0;void main( ){ Point pp,p1(1,2),p2(1);Point p=myfun(pp0, pp1, pp2);p. display ( );_____________; //输出Countp的值}

35.完成程序,使其结果为 x=6,y=10 x=11,y=10#include ﹤iostream.h﹥using namespace std;class Sample{private: int x;_____________;public:Sample (int a);void print( );};Sample:Sample( _____________ ){ x=a; y=x++;}void Sample:: print( ){cout ﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤end;}int Sample: : y =25;void main( ){ Sample s1(5);Sample s2(10);s1. print( );s2. print( );}

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

41.#include ﹤iostream﹥using namespace std;void Result(char ch){switch(ch){case 'A':case 'a': cout ﹤﹤"well!";break;case 'B': case 'b':cout ﹤﹤"good!"; break;case 'C':case 'c':cout ﹤﹤"pass!";break;default:cout ﹤﹤"bad!"; break;}}void main( ){char a1='b', a2='C', a3='f';cout ﹤﹤"Results:"﹤ endl;Result(a1);Result(a2 );Result(a3);Result('A');}

42.#include ﹤iostream.h﹥using namespace std;class Sample {protected: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( ){cout﹤﹤"x="﹤﹤x﹤﹤",y="﹤﹤y﹤﹤ endl;}};void main( ) {Derived d(3, 5);D. disp( ); d++;D. disp( ); d--; d--;D. disp( );}

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

51.设计一个圆类circle和一个桌子类table。circle类包含私有数据成员radius和求圆面积的成员函数getarea( );table类包含私有数据成员height和返回高度的成员函数getheight( )。roundtable类继承所有上述类的数据成员和成员函数,添加了私有数据成员color和相应的成员函数。其中,main函数已给出。请完成程序的其他部分。void main( ) { roundtable rt(0.8,1.2,"黑色");cout﹤"圆桌属性数据"﹤endl; cout﹤﹤"高度:"﹤﹤rt.getheight( )﹤"米"﹤﹤endl;cout﹤"面积:"﹤﹤tr. geared( )﹤"平方米"﹤﹤endl;cout﹤﹤"颜色"﹤﹤rt. getcolor( )﹤﹤endl; }

更多资料

00537 中国现代文学史 2025年10月真题

15044《马原》2026年10月考前10页纸

15044《马原》章节笔记23页

温馨提示:因考试政策、内容不断变化与调整,本网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!
资料下载
  • 15044《马原》名词解释汇总

    下载
  • 00037《美学》 名词解释汇总

    下载
  • 00159《高级财务会计》通关宝典12章

    下载
  • 00537 中国现代文学史 第一章 文学革命与五四新文学

    下载
相关阅读
查看更多