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

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

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

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

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

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

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

A.C++程序中必须有一个主函数main( ),而且是从main( )的第一条语句开始执行
B.非主函数都是在执行主函数时,通过函数调用或嵌套调用而得以执行的
C.主函数可以在任何地方出现
D.主函数必须出现在固定位置

2.若有定义int *p= new int(0),则下列说法正确的是(  )

A.系统用指针变量p来表示所指整型变量
B.声明一个指针变量p,指向名为new的存储单元
C.系统为指针变量p分配一个整型数据的存储空间
D.通过运算符new,分配一个整型数据的存储空间,并将其内存地址赋予指针变量

3.以下有关类与对象的叙述中,错误的是(  )

A.对象是类的一个实例
B.一个类可以有多个对象
C.任何一个对象都归属于一个具体的类
D.只要是某个类的对象,那么该对象就可以访问这个类的所有成员

4.以下有关构造函数的叙述中,错误的是(  )

A.构造函数名必须和类名一致
B.构造函数在定义对象时自动执行
C.在一个类中构造函数有且仅有一个
D.构造函数可以在类体内声明在类体外实现

5.以下叙述中正确的是(  )

A.类成员的定义必须放在类体内部
B.在类中,不作特别说明的数据成员均为私有类型
C.在类中,不作特别说明的数据成员均为公有类型
D.类成员的定义必须是成员变量在前,成员函数在后

6.友元函数的主要作用是(  )

A.提高程序的效率
B.加强类的封装性
C.实现数据的隐蔽性
D.增加成员函数的种类

7.在C++中,字符型数据在内存中的存放形式为(  )

A.原码
B.BCD码
C.ASCII码
D.反码

8.下列变量命名中,非法的是(  )

A.A**LONG
B.MyCar
C.my_car
D.a48

9.关于对类的描述中,错误的是(  )

A.类是创建对象的样板
B.类是具有唯一标识符的实体
C.类就是C语言中的结构类型
D.类是具有共同行为的若千对象的统一描述体

10.不能作为函数重载的判断依据的是(  )

A.const
B.返回类型
C.参数个数
D.参数类型

11.已知:“int a=5; char c="a";”则输出语句cout﹤﹤c+1﹤﹤a﹤﹤c;的显示结果是(  )

A.65a
B.985a
C.98"5"a
D.65"a"

12.下面程序的输出结果是(  ) #include ﹤iostream﹥ using namespace std; int main( ) { int a=1, b=-2, c=3; if(a﹤b) if(b﹤0) c=0; else c+=1; cout ﹤﹤c﹤﹤endl; return 0; }

A.0
B.2
C.3
D.4

13.C++语言的跳转语句中,对于beak和 continue说法正确的是(  )

A.break语句只应用于循环体中
B.continue语句只应用于循环体中
C.break是无条件跳转语句,continue不是
D.break和 continue的跳转范围不够明确,容易产生问题

14.下列函数的说明中,表示纯虚函数的是(  )

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

15.以下关于运算符重载的描述中,错误的是(  )

A.运算符重载其实就是函数重载
B.成员运算符比友元运算符少一个参数
C.需要使用关键字operator
D.成员运算符比友元运算符多一个参数

16.对于下面定义的类Myclass,在函数f( )中将对象成员n的值修改为50的语句应该是(  ) class Myclass { public: Myclass( int i) { n=i; } void SetNum(int x) { n=x; } private: int n; }; int f( ) { Myclass *p=new Myclass(45); _________}

A.p-﹥SetNum(50)
B.SetNum(50)
C.p-﹥n=50
D.*p-﹥SetNum (50)

17.下面关于对象概念的描述中错误的是(  )

A.任何对象都必须有继承性
B.对象是属性和方法的封装体
C.对象间的通信靠消息传递
D.操作是对象的动态属性

18.考虑函数原型void pass(int x, int y=5, char z="*"),下面的函数调用中,属于不合法调用的是(  )

A.pass(5)
B.pass(5, 8)
C.pass(6, "#")
D.pass(0, 0, "*")

19.下列关于虚函数的描述中,正确的是(  )

A.使用虚函数就一定产生多态性
B.虚函数只能是类中的一个成员函数,但不能是静态成员
C.一个类中仅可以声明一个纯虚函数
D.在构造函数和析构函数中调用虚函数采用动态联编

20.有以下程序段,其输出结果是(  ) #include ﹤iostream﹥ using namespace std; void main( ) { char b[ ] ="Hello, you"; b[5]="!"; cout ﹤﹤b﹤﹤endl; }

A.Hello, you
B.Hello
C.Hello! you
D.!

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

11.一般C++语言源程序文件的后缀是.cpp;经过编译后,生成文件的后缀是.obj;经过连接后,生成文件的后缀是_________。

12.C++语言中提供了3种循环语句:_________循环语句、for循环语句和do_while循环语句。

13.在“int a=10, *p=&a;”语句中,p的值是_________。

14.执行3条语句“int a, b, *c=&a; int *p=c; p=&b;”后,c指向_________。

15.若有以下定义:double w[9];则w数组元素下标的下限是0,上限是_________。

16.设int x[3][4]; 则x数组中含有_________个int类型的数组元素。

17.将数学表达式 写成C++语言表达式为:_________。

18.模板函数的真正代码是在源程序中_________时产生。

19.源程序文档化要求程序应加注释,注释一般分为序言性注释和_________。

110.重载函数必须有不同的_________。

111.在类中定义和实现的函数可以成为_________,它能够加快程序执行速度。

112.在C++中输入输出是通过流来完成的,输出操作是将一个对象的状态转换成一个_________序列。

113.C++语言中,派生类继承了基类的全部数据成员和除构造函数及_________之外的全部函数。

114.定义以下变量并假设已赋确定的值:“ char w; int x; float y; double z;”,则表达式“w*x+z-y”的数据类型是_________。

115.若有一个Myclass类,则执行语句“MyClass obj1,obj2[2],*p”后,自动调用该类的构造函数_________次。

116.this指针保证每个对象拥有自己的数据成员,又共享处理这些数据成员的_________。

117.若有整型变量a=1,b=-2,c=3;则表达式a-b﹥b?c:a+b的值为_________。

118.所谓“引用”就是将一个新标识符和一块已经存在的_________相关联,通常用于函数的参数表中或者作为函数的返回值

119.C++为结构动态分配内存的一般格式是“指针名=_________;”,当不再使用这个空间时必须用“delete指针名;”释放空间。

120.C++程序中使用string类定义存储字符串的对象时,必须在程序中包含这个类的头文件,即使用语句_________。

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

21.以下是对类 Sample的定义#include ﹤iostream﹥using namespace std;class Sample{public:Sample(int val);~Sample( );private:float a = 2.5;Sample( );};

22.#include ﹤iostream﹥using namespace std;void swap(int &, int &);void main( ){int a=5, b=10;swap(a, b);cout﹤﹤"a="﹤﹤a﹤﹤",b="﹤﹤b﹤﹤end;}void swap(int x, int y){ int temp;temp =x; x=y; y=temp;}

23.此程序改正后的运行结果为:1 2 5 11 21#include ﹤iostream﹥using namespace std;int f(int); int main( ){int i;for(i=0; i﹤5; i++)cout﹤﹤f(i)﹤﹤" ";return 0;}int f(int i){int k=1;for(;i﹥0;i--) k+=i;return k;}

24.#include ﹤iostream﹥using namespace std;int main( ){int x=15;while(10﹤x﹤50){x++; if(x/3) { x ++; break; }}cout﹤﹤x﹤﹤endl;return 0;}

25.此程序调用 findmax( )函数,返回数组中的最大值。include ﹤iostream﹥using namespace std;int findmax (int *a, int n){int *p, *s;for(p=a, s=a; p-a﹤n; p++)if(*P﹤*s) *s=*p;return(* s);}void main( ){int x[5]={12,2,8,47};cout﹤﹤ findmax(x, 5)﹤﹤endl;}

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

31.程序在主函数中创建派生类Derived的对象obj,调用f( )函数后输出DBC#include ﹤iostream﹥using namespace std;class Base{public:virtual void f( ){cout ﹤﹤"B";}};_________{ public:Derived( ) {cout ﹤﹤"D";}virtual void f( ){Base:: f( );cout ﹤﹤"C"; }};int main( ){Base *ptr;Derived obj;ptr=&obj;_________retun 0;}

32.程序的运行结果为:12#include ﹤iostream﹥using namespace std;class Base{ public:int a; Base (int i) { a=i;}};class Derived:public Base{int a;public:Derived(int x):Base(x) { }void show( ){_________; //输出基类数据成员a的值}};void main( }{ _________ d. show ( );}

33.#include ﹤iostream﹥using namespace std;class F{ public:_________};double F:: operator( ) (double x, double y) const{retum(x+5)*y;}_________{ F f; cout﹤﹤f( 1.5, 2.2)﹤﹤endl;}

34.程序运行结果为3#include ﹤iostream﹥using namespace std;int main( ){int a=16, b=21, m=0; _________{case 0: m++; break;case 1: m++ ;switch(b%3){_________case 1: m++; break;}}cout ﹤﹤m﹤﹤ endl;return 0;}

35.定义平面上一个点的类point,有双精度型私有数据成员横坐标x和纵坐标y,公有成员函数有写入函数input( )、求原点距离函数distance( )和显示函数show( ),请完成point( )的类图。

五、运行结果题(本大题共2小题,每小题10分,共20分)

41.#include ﹤iostream﹥using namespace std;void sort( int L[ ], int n){int i, k, flag, temp;flag=n-1;while( flag﹥0){ k=flag -1; flag=0;for(j=0; j﹤=k; j++){ if(L[j]﹥L[j+1]){ temp=L[j]; L[j]=L[j+1];L[j+1]=temp; flag =j;}}}}void main( ){ int array[4]={7,2,3,4};sort( array, 4);cout ﹤﹤"The sorted numbers:";for(int i=0; i﹤4; i++)cout ﹤﹤ array[i];}

42.#include ﹤iostream﹥using namespace std;class x{protected: int a; public: x( ) {a=1; }};class x1;virtual public x{ public:x1( ) {a+=1; cout﹤﹤"x1: "﹤﹤a﹤﹤","; }};class x2:virtual public x{public: x2( ) {a+=2; cout﹤﹤"x2: "﹤﹤a﹤﹤","; }};class y:public x1, public x2{public: y( ){ cout ﹤﹤"y: "﹤﹤a﹤﹤ endl; }};void main( ){ y obj; }

六、编写程序题(本大题共1小题,共10分)

51.定义一个生日类,数据成员有年、月、日。定义一个人员类,数据成员有姓名、性别、生日。人员类中的生日是生日类的对象,两个类都有构造函数和显示函数。在主函数中声明一个人员类对象,屏幕显示其数据。

更多资料

思想道德与法治自学考试大纲(15042)

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

15043《中国近现代史纲要》2026年10月考点总结

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

    下载
  • 15044《马原》2026年10月考前预测100题

    下载
  • 00537中国现代文学史第二章 30年代文学

    下载
  • 2025年10月自考 00037《美学》真题及答案解析

    下载
相关阅读
查看更多