04737C程序设计试题和答案解析.docx

上传人:b****5 文档编号:29329366 上传时间:2023-07-22 格式:DOCX 页数:18 大小:53.60KB
下载 相关 举报
04737C程序设计试题和答案解析.docx_第1页
第1页 / 共18页
04737C程序设计试题和答案解析.docx_第2页
第2页 / 共18页
04737C程序设计试题和答案解析.docx_第3页
第3页 / 共18页
04737C程序设计试题和答案解析.docx_第4页
第4页 / 共18页
04737C程序设计试题和答案解析.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

04737C程序设计试题和答案解析.docx

《04737C程序设计试题和答案解析.docx》由会员分享,可在线阅读,更多相关《04737C程序设计试题和答案解析.docx(18页珍藏版)》请在冰豆网上搜索。

04737C程序设计试题和答案解析.docx

04737C程序设计试题和答案解析

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

C++程序设计试题

课程代码:

04737

本试卷满分100分,考试时间150分钟.

考生答题注意事项:

1.本卷所有试题必须在答题卡上作答。

答在试卷上无效。

试卷空白处和背面均可作草稿纸。

2.第一部分为选择题。

必须对应试卷上的题号使用28铅笔将“答题卡”的相应代码涂黑。

3.第二部分为非选择题。

必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。

4.合理安排答题空间。

超出答题区域无效。

第一部分选择题

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

在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题

纸”的相应代码涂黑。

错涂、多涂或未涂均无分。

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

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

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

C.普通函数可以不通过对象直接访问类的公有成员

D.一个类可以包含另一个类的对象作为成员

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

A.privateB.protected

C.publicD.publish

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

A.行为抽象B.数据抽象

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

4.在类外定义成员函数时,:

运算符两侧分别连接

A.返回值类型函数名B.返回值类型类名

C.函数名类名D.类名函数名

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

index(Array,2)++后,Array中各元素值为

A.{0,1,2}B.{l,1,2}

C.{1,2,4}D.{0,2,3}

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

A.类体内或体外B.只是在类体内

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

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

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

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

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

A.同一类对象间可相互赋值B.可以使用对象数组

C.对象不可以用作函数参数D.一个对象可以用作另一个类的成员

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

A.指定参数构造函数B.拷贝构造函数

C.初始化函数D.默认构造函数

10.下列运算符不能重载的是

A.!

B.sizeof

C.newD.delete

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

A.PB.*P

C.&PD.P+1

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

A.decB.oct

C.hexD.endl

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

A.constint*P;B.int*constP;

C.constint*constPD.int*P

14.C++程序文件扩展名为

A..cppB..h

C..libD..obj

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

A.名称为main,可为多个B.名称不限,可为多个

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

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

A.cout<<*PB.cout<

C.cout<<&PD.cout<<(void*)P

17.下列描述错误的是

A.在没创建对象前,静态成员不存在

B.静态成员是类的成员,不是对象成员

C.静态成员不能是虚函数

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

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

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

C.友元不是函数D.以上皆不正确

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

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

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

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

A.intmax(inta,intb,intc,intd=0);

B.intmax(inta,intb,intc=0,intd=0);

C.intmax(inta=0,intb,intc=0,intd=0);

D.intmax(inta,intb=0,intc=0,intd=0);

 

非选择题部分

注意事项:

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

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

21.C++程序的编译是以___文件___为单位进行的。

22.默认参数是在__函数原型____中说明的,默认参数可以多于一个。

23.通过C++语言中的___派生___机制,可以从现存类中构建其子类。

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

25.基类的公有成员在通过公有派生得到的子类中访问权限是___公有类型___。

26.要关闭一个输出流对象myFile,所用的C++语句是___myFile.close()___。

27.执行下列代码:

doublepi=3.1415926;cout<

28.对象作为函数参数,就是将实参对象的___值___传递给形参对象,这种传递是单向的。

29.建立一个对象时,对象的状态是不确定的。

为了使对象的状态确定,必须对其进行正确的__初始化____。

30.C++类中的___析构___函数在对象的生存期结束时被自动调用。

31.C++语言中的整数常量有四种:

十进制常量、长整型常量、八进制常量和___十六进制常量___。

32.UML中对象之间的静态关系是通过对象属性之间的连接反映的,称之为___实例连接___。

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

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

35.执行下列代码:

inta=123,b=321;cout<

__123321____。

36.将指向对象的指针作为函数参数,形参是对象指针,实参是对象的___地址值___。

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(){

intx=5,y=6;

constint*p=&x;

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

cout<<*p<

}

42.#include

classf{

private:

Tx,y;模板没有声明

public:

f1(Ta,Tb){x=a;y=b;}

Tmax(){return(x>y)?

x:

y;}

};

main(){

fa;

a.f1(1.5,3.8);

cout<

}

43.#include

classpoint{

private:

floatx,y;

public:

point(floata,floatb){x=a;y=b;}

f(){x=0;y=0;}

voidgetx(){cout<

voidgety(){cout<

};

main(){

pointa(3.5);没有定义一个参数的构造函数

a.getx();

}

44.#include

classf{

private:

floatx,y;

floatget(){returnx+y;}

public:

f1(floata,floatb){x=a;y=b;}

};

main(){

fa;

a.f1(1,3.8);

cout<

}

45.#include

classtestl{

private:

Intx;

public:

testl(){x=2;}

voidset(inta){x=a;}

voidget(){cout<

};

classtest2{

private:

intx;

public:

test2(){x=3;}

voidset(inta){x=a;}

voidget(){cout<

};

classtest:

publictestl,publictest2.{

private:

intx;

public:

voidset(inta){x=a;}

voidgettest(){cout<

};

main(){

testa;a.get();get()存在二义性,使用时需要指出使用哪个基类的函数。

例如:

a.test1:

:

get()

}

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

46.完成下面类中的成员函数的定义。

classpoint

{

private:

intm,n;

public:

point(int,int);

point(point&);

};

point:

point(inta,intb)

{

m=a;

___n__=b;

}

point:

point(___point&t___)

{

m=t.m;

n=t.n;

}

47.#include

usingnamespacestd;

classbase

{

private:

intx;

public:

base(inta){x=a;}

intget(){returnx;}

voidshowbase(){cout<<"x="<

};

classDerived:

publicbase

{private:

inty;

public:

Derived(inta,intb):

base(a){y=b;}

voidshowderived()

{cout<<"x="<

};

voidmain()

{

baseb(3);

Derivedd(6,7);

b.showbase();

d.showderived();

________b=d__________;

b.showbase();

_______base&b1=b___________;

b1.showbase();

base*pb=&b1;’

pb->showbase();

d.showderived();

b.showbase();

}

输出结果如下:

x=3

x=6,y=7

x=6

x=6

x=6

x=6,y=7

x=6

 

48.#include

#include

usingnamespacestd;

classcomplex

{

public:

intreal:

intimag;

complex(intr=0,inti=0)

{

real=r;

imag=i;

}

};

complexoperator+(____complex&a______,complex&b)

{

intr=a.real+b.real:

inti=a.imag+b.imag;

return____complex(r,i)______:

}

voidmain()

{

complexx(1,2),y(3,4),z;

z=x+y;

cout<

}

49.下面程序的运行结果如下:

Thisisline1

Thisisline2

Thisisline3

将下列程序补充完整,答案写在答题纸上。

源程序如下:

#include

#include______

usingnamespacestd;

voidmain()

{

fstreamfin,fout;

fout.open("my.txt",ios:

out);

if(!

fout.is_open())

return;

for(inti=0;i<3;i=i+1)

fout<<"Thisisline"<

fout.close();

fin.open("my.txt",ios:

in);

if(!

fin.is_open())

return;

charstr[100];

while(_!

fin.eof_____)

{

fin.getline(str,100);

cout<

}

fin.close();

}

50.求两个浮点数之差的cha函数的原型声明、调用方法。

#include

usingnamespacestd;

voidmain()

{

floata,b;

___floatcha(float,float)___;∥函数cha的原型声明

a=12.5;

b=6.5;

floatc=____cha(a,b)______;∥调用函数cha

cout<

}

floatcha(floatx,floaty)

{

floatw;

w=x-y;

returnw;

}

五、程序分析题(本大题共2小题,每小题5分,共1O分)

51.#lnclude

voidfunc();

voidmain()

{

for(inti=0;i<6;i++)

{

func();

}

}

voidfunc()

{

intx=0;

x++;

staticinty=0;

y++;

cout<<"x="<

}

答:

x=1;y=1

x=1;y=2

x=1;y=3

x=1;y=4

x=1;y=5

x=1;y=6

52.#include

classA

{

public:

A();

voidShow();

~A();

private:

staticintc;

};

intA:

c=O;

A:

A()

{

cout<<"constructor."<

c+=10;

}

voidA:

Show()

{

cout<<"c="<

}

A:

~A()

{

cout<<"destrucator."<

}

voidmain()

{

Aa,b;

a.Show();

b.Show();

}

答:

constructor.

constructor.

c=20

c=20

destrucator.

destrucator.

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

53.在三角形类tri实现两个函数,功能是输入三个顶点坐标判断是否构成等边三角形

#include

#include

classpoint{point

private:

floatx,y;

public:

f(floata,floatb){x=a;y=b;}

f(){x=0;y=0;}

Voidset(floata,floatb){x=a;y=b;}

floatgetx(){returnx;}

noatgety(){returny;}

};

classtri{

pointx,y,z;

floats1,s2,s3;

public....settri(....);∥用于输入三个顶点坐标

....test(....);∥用于判断是否构成等边三角形

};

请写出两个函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1