全国2012年10月自考C++程序设计试题

发布日期:2019-12-27 编辑整理:安徽省自考网 【字体:

全国2012年10月高等教育自学考试C++程序设计试题
课程代码:04737
 
请考生按规定用笔将所有试题的答案涂、写在答题纸上。

选择题部分

注意事项:

1. 答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。

2. 每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。

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

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

1.使用下列哪一限定符可强制改变访问方式

A.const                                                         B.short

C.1ong                                                          D.signed

2.下列表达式,哪一是声明P为指向常量的指针

A.const int *p                                                B.int* const p;

C.const int *const p                                        D.int *p

3.运算符::叫做

A.下标运算符                                               B.自增运算符

C.成员访问运算符                                         D.作用域运算符

4.如果为一个类定义了自己的构造函数,下列描述正确的是

A.系统不再提供默认构造函数,但提供其他构造函数

B.系统提供其他非默认构造函数

C.系统不再提供默认构造函数

D.系统仍提供默认构造函数

5.对于类中的成员,使用protected修饰,表明该成员的访问权限是

A.公有的                                                      B.私有的

C.保护的                                                      D.不可见的

6.类不是内存中的物理实体,只有当使用类产生对象时,才进行内存分配,这种对象建

立的过程称为

A.程序化                                                      B.结构化

C.过程化                                                      D.实例化

7.下列关于类的权限描述错误的是

A.类本身的成员函数可以访问自己定义的任何成员

B.类的对象只能访问公有成员

C.普通函数只能通过对象访问类的公有成员

D.一个类不能包含另一个类的对象作为成员

8.在派生中,访问控制方式没有下列哪种

A.publish                                                      B.public

C.protected                                                    D.private

9.采用重载函数的目的是

A.实现共享                                                  B.减少空间

C.提高速度                                                   D.使用方便,提高可读性

10.设类A中包含若干其他类的对象作为成员,则在定义类A的构造函数时,应使用下列哪个符号将A::A(参数表)与成员初始化列表隔开

A.,                                                             B.;

C.:                                                             D..

11.设存在数组a,其长度为Len,则下列哪个泛型算法用于对a进行升幂排序

A.reverse(a,a+Len);                                   B.sort(a,a+Len);

C.find(a,a+Len,value);                            D.copy(a,a+Len,b);

l2.函数int sum(int a=10,int b=15,int c=25);不可与下列哪个函数同时声明

A.int sum(int,int,int,int)                          B.int sum(int,int,int)

C.int sum(double)                                          D.int sum(double,double,double);

13.对函数int saveName(char * first,char * sec=" ",char * thd=" ")下列调用方法不正确的是

A.int s=saveName("1","2","3");               B.int s=saveName("1","2");

C.int s=saveName("1");                                D.int s=saveName("1",,"3");

14.下列哪个不是函数重载需要满足的条件

A.返回值类型不同                                        B.参数个数不同

C.参数个数相同时,参数类型不同                D.函数名相同

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

A.同一类对象之间不可相互赋值

B.可以使用对象数组

C.对象可以用作函数参数

D.一个对象可以用作另一个类的成员

16.可用作C++语言用户标识符的一组标识符是

A.void,define,+WORD                              B.a3_b3,_123,YN

C.for,-abc,Case                                         D.2a,DO,sizeof

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

A.{4,2,3}                                                 B.{1,5,3}

C.{1,2,6}                                                 D.{4,5,6}

1 8.对指针动态分配空间用的关键字是

A.define                                                        B.int

C.new                                                           D.float

19.一个函数功能不太复杂,但要求被频繁调用,应选用

A.内联函数                                                  B.重载函数

C.递归函数                                                   D.嵌套函数

20.在int a=3,*p=&a;中,*p的值是

A.变量a的地址值                                        B.无意义

C.变量p的地址值                                        D.3

非选择题部分

注意事项:

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

二、填空题(本大题共20小题,每小题1分,共20分)

21.默认参数是在______中说明的,默认参数可以多于1个,但是必须放在参数序列的后部。

22.类所声明的内容用______括起来,之间的内容称为类体。

23.执行代码double pi=3.141592;cout<<pi;程序的输出结果是______。

24.在文件输入流类中,用于判断提取操作是否已达到文件尾的方法是______。

25.常量成员包括常量数据成员,静态常数成员,和______。

26.通过C++语言中的______机制,可以从现存类中构建其子类。

27.如果一个函数直接或间接地调用自身,这样的调用称为______调用。

28.使用C++编译器对C++源程序进行编译产生文件的扩展名是______。

29.C++的类成员由数据成员和______组成。

30.C++面向对象程序设计的特点为:抽象,封装,继承和______。

31.C++标准库string类中用于在主串中检索所需字符串的成员函数是______。

32.C++中函数参数有两种传递方式:传值和______。

33.在删除一个动态对象时,将自动调用该动态对象所属类的______函数。

34.在C++当中,类外的函数只能通过类的对象使用该类的______。

35.简单成员函数是指声明中不含const,volatile,______关键字的函数。

36.执行cout<<char('a'+2)<<endl;后的显示结果为______。

37.假定类A有一个公有属性的静态数据成员b,在类外不通过对象名访问b的写法是______。

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

39.一旦基类定义了虚函数,该基类的派生类中的______也自动成为虚函数。

40.在C++类中,有一种类不能生成对象只能被继承,称之为______。

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

下面的类定义中有一处错误,请写出错误所在行并给出修改意见。

41.#include<iostream.h>

template<class T>

T minx(T x,T y){

if(x>y)

x=y;

return x;

}

void main()

{

int a;

double d;

cout<<minx(a,d)<<endl;

}

42.#include<iostream.h>

class People{

public:

void People(){}

const int age()const{return 15;}

char * name(){return"Green";}

} ;

void main()

{

const People s;

int i=s.age();

cout<<"age="<<i<endl;

}

43.#include<iostream.h>

class A{

public:void show(){cout<<"class A show"<<endl;}

} ;

class B{

public:void show(){cout<<"class B show"<<endl;}

} ;

class C:public A,public B{

public:void print(){cout<<"class C print"<<endl;}

} ;

void main(){

C c;

c.show();

c.print();

}

44.#include<iostream.h>

class Student{

int x=0,y=0;

public:

Student(){

x=1;

y=l;

}

Student(int a,int b){

x=a;

y=b;

}

void get(){

cout<<x<<" "<<y<<endl;

}

} ;

int main(){

Student student(5,6);

student.get();

}

45.#include <iostream.h>

class Base{

public:virtual void fun()=0;

} ;

class Test:public Base{

public:virtual void fun(){cout<<"Test.fun="<<endl;}

} ;

void main(){

Base a;

Test *p;p=&a;

}

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

46.在下面程序横线处填上适当内容,使程序执行结果为:40:15

程序如下:

#include <iostream.h>

template<class T>

T func(T x,T y){

if(sizeof(T)==8)

return ______;

else

return ______;

}

void main(){

cout <<func(8,5)<<":"<<func(5.0,10.0)<<endl;

int d;cin >>d:

}

47.在下面程序横线处填上适当内容,使程序执行结果为:

x=0,y=0

x=1,y=2

x=10,y=20

程序如下:

#include<iostream.h>

class Sample

}

int x,y;

public:

Sample(){______}

Sample(______){x=a;y=b;}

void disp()

{

cout<<"x="<<x<<",y="<<y<<endl;

}

};

void main()

{

Sample s1,s2(1,2),s3(10,20);

Sample *pa[3]={&s1,&s2,&s3};

for(int i=0;i<3;i++)

pa[i]->disp();

}

48.在下面程序横线处填上适当内容,使程序执行结果为:

n=30

程序如下:

#include<iostream.h>

template<class T>

class Test

{

T n;

public:

Test(){}

Test(T i){n=i;}

Test<T>______(const Test<T>&s)

{

static Test<T>temp;

______;

return temp;

}

void disp(){cout<<"n="<<n<<endl;}

} ;

void main()

{

Test <int>t1(4),t2(5),t3;

t3=t1+t2;

t3.disp();

}

49.在下面程序横线处填上适当内容,使程序执行结果为:

n=2,sum=2

n=3,sum=5

n=5,sum=10

程序如下:

#include<iostream.h>

class Test

{

int n;

static int sum;

public:

Test(int x){n=x;}

void add(){______;}

void disp()

{

cout<<{"n="<<n<<",sum="<<sum<<endl;

}

} ;

int ______=0;

void main()

{

Test a(2),b(3),c(5);

a.add();

a.disp();

b.add();

b.disp();

c.add();

c.disp();

}

50.在下面程序中的横线处填上适当内容,使程序完整

#include<iostream.h>

______

class A

{

int i;

public:

int set(B&);

int get(){return i;}

A(int x){i=x;}

} ;

class B

{

int i;

public:

B(int x){i=x;}

______ A;

} ;

int A::set(B&b)

{

return i=b.i;

}

void main()

{

A a(1);

B b(2);

cout<<a.get()<<",";

a.set(b);

cout<<a.get()<<endl;

}



安徽省自考网学习课程中心


安徽省自考网声明:


1、由于各方面情况的调整与变化,本网提供的考试信息仅供参考,考试信息以省考试院及院校官方发布的信息为准。


2、本网信息来源为其他媒体的稿件转载,免费转载出于非商业性学习目的,版权归原作者所有,如有内容与版权问题等请与本站联系。联系邮箱:952056566@qq.com


安徽自考便捷服务

安徽自考微信交流群

安徽自考微信交流群