C++程序设计2009年10月真题试题(04737)

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

摘要:C++程序设计2009年10月真题试题及答案解析(04737),本试卷总共100分。

C++程序设计2009年10月真题试题及答案解析(04737)

C++程序设计2009年10月真题试题及答案解析(04737),本试卷总共100分。

一、单项选择题

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

1.对C++中主函数描述正确的是(  )

A.名称为main,可为多个
B.名称不限,可为多个
C.名称为main,必须有且只能有一个
D.名称不限,必须有且只能有一个

2.调用声明为int result(int a, int b)的函数时,正确的方法是(  )

A.result(1, 2)
B.result(1)
C.result(0.1, 0.3)
D.result(1, 2, 3)

3.用于包含C++标准库iostream的预处理指令是(  )

A.#define
B.#include
C.#define "iostream"
D.#include "iostream"

4.无类型标识符是指(  )

A.void
B.bool
C.short
D.long

5.从本质上看,引用是被引用变量的(  )

A.拷贝
B.别名
C.复制
D.克隆

6.下面关于数组的初始化正确的是(  )

A.char str[ ]={"a","b","c"};
B.char str[2]={"a","b","c"};
C.char str[1][2]={{"a","b"},{"e","d"}};
D.char str[ ][ ]={"a","b","c"};

7.C++类中定义的成员默认访问属性为(  )

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

8.决定C++语言中函数的返回值类型的是(  )

A.return语句中的表达式类型
B.调用该函数时系统随机产生的类型
C.调用该函数时的主调用函数类型
D.在定义该函数时所指定的数据类型

9.函数int & min(int &, int &)返回参数中较小者,设有两整型变量int a=10; int b=15;在执行语句min(a, b)--; 之后,a,b值分别为(  )

A.9,14
B.9,15
C.10,14
D.10,15

10.声明函数为内联函数时所使用的关键字为(  )

A.const
B.inline
C.short
D.signed

11.函数int sum(int a=1, int b=1, int c=3)可与下列哪个函数同时声明(  )

A.double sum(int);
B.char sum(int, int);
C.int sum(double);
D.int sum(int, int, int);

12.函数模板template void Func(T,T)可具有下列哪种实例化形式(  )

A.void Func(float, int)
B.void Func(char, char)
C.void Func(int, double)
D.void Func(bool, float)

13.下列访问成员的方式哪个是正确的(  )

A.对象名.对象成员名
B.对象指针名.对象成员名
C.对象名->对象成员名
D.类名->对象成员名

14.对类A,复制构造函数的原型是(  )

A.A::A(const A&);
B.A::A(const A *);
C.A::A(const A);
D.A::A( );

15.对class point,如使用point * ptr=new point[2]; 创建对象数组,则删除此数组使用的语句是(  )

A.delete ptr[2];
B.delete[ ] ptr;
C.delete ptr[ ];
D.delete[2] ptr;

16.下列哪个编译指令不属于条件编译指令(  )

A.#if
B.#else
C.#endif
D.#error

17.类A中存在静态数据成员x,设a和b是类A的两个对象,在执行a.x=10之后,b.x 的值为(  )

A.未初始化
B.等于a.x 的值为(  )
C.等于0
D.随机

18.使用string.h库操纵字符串时,将两个字符串连接成一个字符串的函数是(  )

A.strlen( )
B.strcap( )
C.strcat( )
D.strcmp( )

19.基类中的public成员,通过public派生,其在派生类中的访问权限为(  )

A.不可访问
B.private
C.protected
D.public

20.不同对象调用同名函数,但导致完全不同行为的现象称为(  )

A.抽象
B.封装
C.继承
D.多态性

二、填空题

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

11.在C++语言的面向对象设计框架中,_______是程序的基本组成单元。

12.执行代码double pi=3.1415192; cout<<setprecision(3)<<pi; 程序的输出结果是_______。

13.C++语言提供的的基本控制结构可以分为3种类型:顺序结构、_______和循环结构。

14.要使用STL库提供的对数组进行降幂排序算法,在源程序中需要包含的头文件是______。

15.在C++标准库中,用_______类来表示复数。

16.将对象作为函数参数,是将实参对象的_______传递给形参对象,这种传递是单向的。

17.C++函数的返回类型可以是除数组与_______以外的任何类型。

18.能提供封装的C++关键字是_______。

19.在C++的类声明中,用public关键字声明的类成员的访问权限是_______。

110.开发一个C++语言程序的步骤通常包括编辑、_______、连接、运行和调试。

111.C++类中的_______函数在对象的生存期结束时被自动调用。

112.友元函数可以存取类的_______、公有成员和保护成员。

113.若类的成员函数用关键字static进行修饰,这样的成员函数称为_______。

114.在C++中,创建派生类对象时,总是先从_______的初始化开始的。

115.类的继承是指派生类继承基类的数据成员和_______。

116.在C++中,利用向量类模板定义一个具有20个double的向量,其元素均被置为0.5,实现此操作的语句是_______。

117.vector类中用于返回向量中的最后一个对象的方法是_________。

118.虚函数类似于重载函数,但与重载函数的实现策略不同,对虚函数声明时应使用_______关键字。

119.在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的_______特性。

120.执行下列代码cout << showpoint << 123.0;程序的输出结果是_______。

三、改错题

(本大题共5小题,每小题4分,共20分)下面的类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。

21.#include <iostream>using namespace std;int main ( ){int num; max=10; num=1while (num < max) num ++ ;cout <<″Num=″<< num;return 0;}

22.#include <iostream>using namespace std;class A {void show ( ) {cout<<″Hello!″;}};int main ( ) {A a; a.show ( );return 0;}

23.#include <iostream>using namespace std;int main ( ) {const int num = 20;int scores[num];for (int i=1;i<=num;i ++){scores[i]=i;}return 0;}

24.#include <iostream>using namespace std;class CMax {private:int xx; int yy;public:CMax(int x, int y){ xx = x; yy = y; }void setValue(int x,int y){ xx = x; yy = y;}int max( ){return xx >yy?xx:yy;}};void main( ){CMax m( );m.setValue(20,30);cout <<″Max=″<<m.max( )<<endl;}

25.#include <iosiream>using namespace std;class A{public:char name[255];private:char * getName( ){  return name; }};class B:public A{public:B(char * n){strcpy ( name, n);}};void main( ){B b(″Hello!″);cout <<″Name:″<<b.getName( );}

四、完成程序题

(本大题共5小题,每小题4分,共20分)

31.将下面程序补充完整,使程序输出结果为:BeginWelcomeShowEnd程序如下:#include <iostream>using namespace std;class A{public:__________{cout <<″Begin″<<endl;}void show( ){cout<<″Show″<<endl;}___________{cout<<″End″<<endl;}};A object;int main( ){cout <<″Welcome″<<endl;object.show( );return 0;}

32.请将下面程序补充完整,使程序可以正常打印9×9乘法口诀。#include <iostream>using namespace std;class A {private:int a; int b;public:__________{ a = x; b = y; }void set(int x,int y){ a = x; b = y; }void display( ){cout<<a<<′*′<<b<<′=′<<a * b;}};int main( ){A a(1,1);for(int i=1;i<=9;i++){for(int j=1;__________;j++){a.set(j,i);a.display( );cout<<″″;}cout<<endl;}return 0;}

33.将下面程序补充完整,使程序可以输入学生信息并计算平均成绩。#include <iostream>#include <string.h>using namespace std;class Student{private:char name[255];int score[10];public:Student(char n[ ],int s[ ]){___________;for(int i=0;i<10;i++){score[i]=s[i];}}void Show( ){int sum=0;for(int i=0;i<10;i++){_______________;}cout<<″名字:″< < name<<″,平均成绩:″<<sum/10;}};void main( ){char name[255];int score[10];cout<<″姓名:″;cin>>name;for(int i=0;i<10;i++){cout<<″成绩″<<i+1<<″:″;cin>>score[i];}Student s(name,score);s.Show( );}

34.将下面程序补充完整,使程序可以正常运行,并释放内存。#include <iostream.h>__________class A {private:T * data;int length;public:A (int len){length=len;data=new T[len];}~A( ){_________}T& operator[ ](int i){return data[i];}};int main( ){A<int> obj(2);obj[0]=1;obj[1]=2;cout<<obj[0]<<endl;cout<<obj[1]<<endl;return 0;}

35.将下面程序补充完整,使程序运行结果为:C1ass AClass B程序如下:#include <iostream.h>#include <string.h>class A{public:virtual void GetA( ) = 0;};class B: public A{private:char str[32];public:void GetA( ){cout<<″Class A″<<endl;}const char * GetB( ) { __________}B(char * s){strcpy(str,s);}};void main( ){A * a;B b(″Class B″);a=__________;a-> GetA( );cout<<b.GetB( )<<endl;return;}

五、程序分析题

(本大题共2小题,每小题5分,共10分)

41.#include <iostream>using namespace std;int main( ){int i,j;for(i=1;i<=4;i+=1)for(j=2;j<=4;j+=j){if(i+j<5)cout<<″+″;elsecout<<″*″;}return 0;}

42.#include <iostream>using namespace std;class A {int a;public:A(int aa=0){a=aa;}~A( ){cout <<″Destructor A!″<<a<<endl;}};class B: public A{int b;public:B(int aa = 0,int bb = 0):A(aa){b = bb;}~B( ){cout <<″Destructor B!″<< b << endl;}};void main( ){B x(5), y(6,7);}

六、程序设计题

(本大题共1小题,共10分)

51.下面Shape类是一个表示形状的抽象类,Area( )为求图形面积的函数。请从Shape类派生梯形类(Trapezoid)、圆形类(Circle),三角形类(Triangle),并给出具体的求面积函数。其中,所有派生类计算面积需要用到的参数由构造函数给出,梯形面积计算需要上底、下底和高,三角形面积需要底和高,圆形面积需要半径。形状的抽象类声明如下:class Shape {public:virtual double Area( ) = 0;};

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

自考备考资料免费领取

去领取

距离2024 自考考试

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

每年3月、8月

领准考证

考前7天

考试信息

每年4月、10月

成绩查询

考后45天

专注在线职业教育23年

项目管理

信息系统项目管理师

厂商认证

信息系统项目管理师

信息系统项目管理师