C程序设计试题及答案 下载本文

内容发布更新时间 : 2024/6/24 19:33:03星期一 下面是文章的全部内容请认真阅读。

全国2014年4月高等教育自学考试

C++程序设计试卷

课程代码:04737

本试卷满分100分,考试时间150分钟. 考生答题注意事项:

1.本卷所有试卷必须在答题卡上作答。答在试卷上无效。试卷空白处和背面均可作草稿纸。 2.第一部分为选择题。必须对应试卷上的题号使用28铅笔将“答题卡”的相应代码涂黑。 3.第二部分为非选择题。必须注明大、小题号,使用0.5毫M黑色字迹签字笔作答。 4.合理安排答题空间。超出答题区域无效。

第一部分选择题

一、单项选择题(本大题共20小题,每小题1分,共20分)

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题 纸”的相应代码涂黑。错涂、多涂或未涂均无分。 1.下列关于类的权限描述错误的是

A.类本身的成员函数可以访问自身的任何成员 B.类的对象只能访问公有成员

C.普通函数可以不通过对象直接访问类的公有成员 D.一个类可以包含另一个类的对象作为成员

2.只能在自身类和子类成员函数中被访问,无法通过对象在类外访问的成员属于

A.private C.public

3.面向对象中的“对象”是指

A.行为抽象

C.行为抽象和数据抽象的统一

B.数据抽象

D.行为抽象和数据抽象的对立 B.protected D.publish

4.在类外定义成员函数时,::运算符两侧分别连接

A.返回值类型函数名 C.函数名类名D.类名函数名

5.设函数int& index(int * a,int i)返回数组a中下标为i的元素,如存在整型数组int Array[]={1,2,3},在执行 index(Array,2)+ +后,Array中各元素值为

A.{0,1,2} C.{1,2,4}

6.类构造函数定义的位置是

A.类体内或体外

B.只是在类体内

1 / 14

B.{l,1,2} D.{0,2,3} B.返回值类型类名

C.只在类体外 D.在类的成员函数中

7.设存在数组a,其长度为Len,则下列哪项泛型算法用于在a中寻找值Value的位置

A.reverse(a,a+Len,Value); C.find(a,a+Len,Value);

8.关于对象的性质,下列描述错误的是:

A.同一类对象间可相互赋值 C.对象不可以用作函数参数

9.声明一个没有初始化参数的对象,需调用

A.指定参数构造函数

C.初始化函数D.默认构造函数 10.下列运算符不能重载的是

A.! C.new

B.sizeof D.delete B.拷贝构造函数 B.可以使用对象数组

D.一个对象可以用作另一个类的成员 B.sort(a,a+Len,Value); D.copy(a,a+Len,Value);

11.如P是一指针类型表达式,则下列表达式中不是左值表达式的是

A.P C.&P

B.*P D.P+1

12.使用下列流格式控制符能输出一个换行符的是

A.dec C.hex

B.oct D.endl

13.下列表达式,能将P声明为常量指针的是

A.const int * P; C.const int * const P 14.C++程序文件扩展名为

A..cpp C..lib

15.对C++中主函数描述正确的是

A.名称为main,可为多个

C.名称为main,必须有且只能有一个

B.名称不限,可为多个

D.名称不限,必须有且只能有一个 B..h D..obj B.int*const P; D.int * P

16.假定有char * P=\;,要输出这个字符串的地址值的正确写法是

A.cout<< *P C.cout<<&P

17.下列描述错误的是

A.在没创建对象前,静态成员不存在 B.静态成员是类的成员,不是对象成员 C.静态成员不能是虚函数

D.静态成员函数不能直接访问非静态成员

2 / 14

B.cout<

18.对于友元描述正确的是

A.友元是本类的成员函数B.友元不是本类的成员函数 C.友元不是函数

D.以上皆不正确

19.一个函数功能不太复杂,但要求频繁使用,则该函数适合作为

A.内联函数 C.递归函数

20.下列默认参数的声明不正确的是

A.int max(int a,int b,int c,int d=0); B.int max(int a,int b,int c=0,int d=0); C.int max(int a=0,int b,int c=0,int d=0); D.int max(int a,int b=0,int c=0,int d=0);

B.重载函数 D.嵌套函数

非选择题部分

注意事项:

用黑色字迹的签字笔或钢笔将答案写在答题纸上,不能答在试卷卷上。

二、填空题(本大题共20小题,每小题1分,共20分) 21.C++程序的编译是以___文件___为单位进行的。

22.默认参数是在__函数原型____中说明的,默认参数可以多于一个。 23.通过C++语言中的___派生___机制,可以从现存类中构建其子类。 24.拷贝构造函数使用___引用对象___作为参数初始化创建中的对象。 25.基类的公有成员在通过公有派生得到的子类中访问权限是___公有类型___。 26.要关闭一个输出流对象myFile,所用的C++语句是___myFile.close()___。

27.执行下列代码:double pi=3.1415926;cout<

29.建立一个对象时,对象的状态是不确定的。为了使对象的状态确定,必须对其进行正确的__初始化____。 30.C++类中的___析构___函数在对象的生存期结束时被自动调用。

31.C++语言中的整数常量有四种:十进制常量、长整型常量、八进制常量和___十六进制常量___。 32.UML中对象之间的静态关系是通过对象属性之间的连接反映的,称之为___实例连接___。

33.声明一个常成员函数Fun,返回类型为char,第一个参数类型为int,第二个参数类型为double,则该函数的声明原型是___char Fun(int,double)const。___。

34.在C++语言中,利用向量类模板定义一个具有20个int类型且初值为1的向量C,实现此操作的语句是___vectorC(20,1)___。

35.执行下列代码:int a=123,b=321;cout<

3 / 14

37.vector类中用于返回向量中第一个对象的方法是___front()___。 38.C++语言中动态分配内存的关键字是__new____。 39.C++类成员的访问权限有___私有___、公有和保护三种。

40.写出声明一个复数对象num的语句,并使对象被初始化为单精度2.2+1.3i,此声明语句是__complexnum(2.2,1.3)____。

三、改错题(本大题共5小题,每小题4分,共20分)

下面的每题中有一处错误,请在答题纸上写出错误所在行并给出修改意见 41.#include main ( ){ int x=5,y=6; const int *p=&x;

* p=y;指向常量的指针P不能进行左值操作 cout<<*p<

42.#include class f {

private:T x, y。 模板没有声明 public:f1(T a,T b){x=a;y=b;} T max( ){return(x>y)?x:y;} }; main( ) { f a;

a.f1(1.5,3.8); cout<

43.#include

class point { private:float x,y;

public:point(float a,float b){x=a;y=b;} f( ){x=0;y=0;}

void getx( ){cout<

point a (3.5);没有定义一个参数的构造函数 a.getx( );

}

44.#include

4 / 14

class f{

private:float x,y; float get( ){return x+y;}

public:f1(float a,float b){x=a;y=b;} }; main( ) { f a;

a.f1(1,3.8);

cout<

45.#include class testl{ private:Int x; public:testl( ){x=2;} void set(int a){x=a;} void get(){cout<

class test:public testl,public test2.{ private:int x;

public:void set(int a){x=a;} void gettest( ){cout<

test a;a.get( );get()存在二义性,使用时需要指出使用哪个基类的函数。例如:a.test1::get() }

四、完成程序题(本大题共5小题,每小题4分,共20分) 46.完成下面类中的成员函数的定义。 class point { private: int m,n; public: point(int,int);

5 / 14