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

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

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

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

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

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

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

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

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

2.下列输出语句中,正确的是(  )

A.cout﹤﹤("%c "," student")
B.cout﹤﹤("%s ","hello")
C.cout﹤﹤ ("%c ","c")
D.cout ﹤ ("%s ", &a)

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

A.void print( )const
B.void print(const)
C.void const print( )
D.const void print( )

4.if与else在使用过程中为避免嵌套出现二义性,C++中规定与else子句配对的是(  )

A.其之前最近的if语句
B.其之前最近且尚未配对的if语句
C.缩排位置相同的if语句
D.其之后最近的if语句

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

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

6.逻辑运算符两侧运算对象的数据(  )

A.是逻辑型数据
B.只能是整型数据
C.只能是整型或字符型数据
D.可以是任何类型的数据

7.关于构造函数的说法,不正确的是(  )

A.没有定义构造函数时,系统将不会调用它
B.其名与类名完全相同
C.它在对象被创建时由系统自动调用
D.没有返回值

8.所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是(  )

A.类
B.对象
C.函数体
D.数据块

9.下列关于类的继承描述中,错误的是(  )

A.基类不一定具有派生类的全部属性和方法
B.派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
C.继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
D.一个基类可以有多个派生类,一个派生类可以有多个基类

10.在C++中,函数原型不能标识(  )

A.函数的返回类型
B.函数参数的个数
C.函数参数类型
D.函数的功能

11.若二维数组y有m列,则位于y[i][j]之前的元素数量是(  )

A.j*m+i
B.i*m+j
C.i*m+j-1
D.i*m +j+1

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

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

13.下面不能够判断字符串S是空串的是(  )

A.if(S[0]==0)
B.if(strlen(S)==0)
C.if(strcmp(S, " ")==0)
D.if(S=="")

14.下列输出字符"d"的方法中,错误的是(  )

A.cout﹤﹤put("d")
B.cout﹤﹤"d"
C.cout. put("d")
D.char a="d"; cout﹤﹤a;

15.关于引用,下列的说法中错误的是(  )

A.引用是给被引用的变量取一个别名
B.引用主要是用来作函数的形参和函数的返回值
C.在声明引用时,要给它另开辟内存单元
D.在声明引用时,必须同时使它初始化

16.下面关于C++字符数组的叙述中,错误的是(  )

A.字符数组可以放字符串
B.字符数组的字符可以整体输入、输出
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D.可以用关系运算符对字符数组比较大小

17.下列说法不正确的是(  )

A.主函数main中定义的变量在整个文件或程序中有效
B.不同函数中,可以使用相同名字的变量
C.形式参数是局部变量
D.在一个函数内部,可以在复合语句中定义变量,这些变量只在复合语句中有效

18.非数组指针或引用型变量做实参时,它和对应虚参之间的数据传递方式是(  )

A.地址传递
B.单向值传递
C.双向值传递
D.由用户指定传递方式

19.下面叙述中错误的是(  )

A.预处理命令都必须以“#”开始
B.在程序中凡是以“#”开始的语句行都是预处理命令行
C.C++程序在程序执行过程中对预处理命令进行处理
D.一行只能写一条预处理命令

20.下列关于友元函数的描述,正确的是(  )

A.友元函数可以存取私有成员、公有成员和保护成员
B.友元函数不可以是一个类
C.友元函数的作用之一是实现数据的隐藏性
D.在类中说明的友元函数,函数的定义不可在类体之外

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

11.#include ﹤iostream. h﹥命令中,include的意义是:_________。

12.this指针始终指向调用成员函数的_________。

13.假定AB为一个类,则执行语句AB a[10]; 时,系统自动调用该类的构造函数的次数为_________。

14.一个抽象类的派生类可以实例化的必要条件是实现了所有的_________。

15.cin是输人流istream的一个对象,处理标准输入;_________是输出流ostream的一个对象,处理标准输出。

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

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

18.书写程序语句时,适当增加空行和程序注释以增加程序的_________。

19.C++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取_________方式。

110.如果要把A类成员函数f( )且返回值为void声明为类B的友元函数,则应在类B的定义中加入语句_________。

111.C++语言的_________提供了与要操作的元素类型无关的算法。

112.为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常为该类定义_________。

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

114.在函数前面用_________保留字修饰时,则表示该函数为内联函数。

115.面向对象的四个基本特性是多态性、继承性、封装性_________。

116.派生类的主要用途是可以定义其基类中_________。

117.若int a=8; int b=(++a)++; 则b=_________。

118.在C++中,利用向量类模板定义一个具有10个int的向量A,其元素均被置为1,实现此操作的语句是_________。

119.将指向对象的引用作为函数的形参,形参是对象的引用,实参是_________。

120.重载的运算符保持其原有的_________、优先级和结合性不变。

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

21.1 #include "stdafx. h"2 #include ﹤iostream﹥3 using namespace std;4 class Test5 { prvate:6 int x, y=20;7 public:8 Test(int i, int j) { x=i, y=j; }9 int getx( ) { return x; }10 int gety ( ) { return y; }11 };12 void main( )13 { Test mt(10,20);14 cout ﹤﹤mt. getx( )﹤﹤ endl;15 cout ﹤﹤mt. gety( )﹤﹤ endl;16 }

22.1 #include ﹤iostream.h﹥2 #include ﹤string. h﹥3 class Base 4 {public:5 Base(char *s="") { strcpy(name, s); }6 void show( );7 protected:8 char name[20];9 };10 Base b;11 void show( )12 { cout ﹤﹤"name: "﹤ b. name ﹤ endl; }13 void main( )14 { Base d2("hello");15 show( );16 }

23.1 #include ﹤iostream﹥2 using namespace std;3 int main( ){4 const int num =20;5 int scores[num];6 for(int i=1; i﹤=num; i ++)7 scores[i]=i;8 return 0; }

24.1 #include ﹤iostream.h﹥2 class Aton3 { int X, Y;4 protected:5 int zx, zy;6 public:7 void init( int i, int) { zx=i; zy =j; }8 Aton(int i, int j, int n=0, int m=0)9 { X=i, Y=j, zx=m, zy=n;10 }11 };12 void main( )13 { Aton A(25,20,3,5);14 A.init(5,9);15 cout ﹤﹤A.X﹤﹤ endl;16 cout ﹤﹤A.Y﹤﹤ endl;17 }

25.1 #include ﹤iostream﹥2 using namespace std;3 int main( )4 { inta=10, b=18, c=77;5 const int *p = c;6 cout ﹤﹤*p﹤﹤ endl;7 return 0;8 }

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

31.下面程序中用来求数组和。请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:s=150。#include ﹤iostream.h﹥class Arr{int *a, n;public:Arr( ):a(0),n(0) { } Arr( int *aa, int nn){n=nn; a= new int[n];for(int i=0; i﹤nn; i ++) *(a+i)=*(aa+i);}~Arr( ){delete a; }_________;{return *(a+i);}};void main( ){int b[5]={10,20,30,40,50};Arr a1(b, 5) int i=0, s=0;_________ s+=a 1. GetValue(i);cout﹤﹤"s="﹤﹤s﹤﹤endl;}

32.在下面程序的横线处填上适当字句,完成类的定义。class line;class box{private:int color;int upx, upy;int lowx, lowy;pubnic:_________ void set_color (int c ){ color =c;} void define_box(int x1, int y1, int x2, int y2){ upx=x1; upy =y1; lowx =x2; lowy =y2; }};class line{private:int color;int startx, starty;int endx, endy;public:friend int same_color(line l, box b)void set_color (int c) { color =c; }void define_line(_________){ startx =x1; starty =y1; endx =x2; endy =y2; }};int same_color (line l, box b){ if (l. color==b. color) return l;retum 0;}

33.在下面程序的横线处填上适当的字句,使该程序执行结果为40。#include ﹤iostream.h﹥class Test{public: _________;Test (int i=0){ x=i+x; }int Geytnum( ){ return Test:: x +10; }};_________;void main( ){Test test; cout ﹤﹤ test. Getmum( )﹤﹤ endl;}

34.在下面程序的横线处填上适当的字句,使输出为:0,2,10。#include "stdafx. h"#include ﹤iostream﹥#include "math. h"using namespace std;class Magic{ double x;public:Magic( double d = 0. 00): x( fabs(d)){ }Magic operator +(_________) { return Magic(sqrt(x*x+c. x*c. x));}_________&operator ﹤﹤(ostream & stream, Magic &c){ stream ﹤﹤c.x; return stream; }};void main( ){Magic ma;cout ﹤﹤ma﹤﹤","﹤﹤Magic(2)﹤﹤", "﹤﹤ma+Magic(-6)+ Magic(-8)﹤﹤endl;}

35.下面是一个输入半径,输出其面积和周长的C++程序,在横线处填上正确的语句。(圆周率为3.14159) #include "stdafx. h"#include ﹤iostream﹥#include "math. h"using namespace std;_________ //宏定义 void main( ){double rad;cout ﹤﹤ "rad ="; cin ﹥﹥ rad;double l= 2.0*pi *rad; _________;cout﹤﹤ " The long is: "﹤﹤l﹤﹤ endl;cout﹤﹤ "The area is: "﹤﹤s﹤﹤ endl;}

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

41.#include ﹤iostream. h﹥class example{int a; public: example(int b=5){ a=b++; }void print( ){ a=a+1; cout﹤﹤a﹤﹤" "; }void print( )const{ cout ﹤﹤a﹤﹤ endl; }};void main( ){ example x; const example y(2); x. print( ); y. print( ); }

42.#include ﹤iostream. h﹥class Based{public:Based( ){cout﹤﹤" Based构造函数 "; fun( ); }virtual void fun( ){cout﹤﹤" Based::fun( )函数 "; }};class Derived: publicBase{public:Derived( ){cout﹤﹤" Derived构造函数 "; fun( ); }void fun( ) { cout﹤﹤"Derived::fun( )函数 "; }};void main( ){Derived d; }

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

51.声明复数类Complex,该类中有两个私有变量rel,image分别表示一个复数的实部和虚部。为Complex类添加适当的构造函数,并使用友元函数add实现复数加法。#include ﹤iostream﹥using namespace std;class Complex{private:double real, image;public:void setRI( double a, double b){real=a; image=b;}double getReal( ){return real;}double getImage( ){return image;}void print( ) {if( image ﹥0)cout﹤﹤"复数:"﹤reall﹤﹤"+"﹤﹤ image﹤﹤"i"﹤﹤endl;if( image ﹤0)cout﹤﹤"复数:"﹤﹤real﹤﹤"-"﹤﹤ image﹤﹤"i﹤endl;}friend Complex add( Complex, Complex); //声明友元函数};void main( ){Complex c1(19, 0.864), c2, c3;c 2.setRI(90, 125.012);c3=add(c1, c2) cout﹤﹤"复数一:";c 1.pint( ); cout﹤﹤"复数二:";c 2.pint( ); cout﹤﹤"相加后:"; c 3.pint( );}

更多资料

15040《习近平新时代中国特色社会主义思想概论》简答题31问

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

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

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

自考备考资料免费领取

去领取