自考C++程序的设计04737试题和答案解析.docx
《自考C++程序的设计04737试题和答案解析.docx》由会员分享,可在线阅读,更多相关《自考C++程序的设计04737试题和答案解析.docx(15页珍藏版)》请在冰豆网上搜索。
自考C++程序的设计04737试题和答案解析
2015年10月高等教育自学考试全国统一命题考试
C++程序设计试卷
(课程代码04737)
本试卷共10页,满分100分,考试时间150分钟。
考生答题注意事项:
1.本卷所有试题必须在答题卡上作答。
答在试卷上无效,试卷空白处和背面均可作草稿纸。
2.第一部分为选择题。
必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑。
3.第二部分为非选择题。
必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。
4.合理安排答题空间,超出答题区域无效。
第一部分选择题
一、单项选择题(本大题共20小题,每小题1分。
共20分)
在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑。
未涂、错涂或多涂均无分。
1.在C++语言中用于注释的标识符是
A・&B・//C・嵐D・/
2.编写C卄程序一般需经过的几个步骤依次是
A.编辑、调试、编译、连接B.编译、调试、编辑、连接
C.编译、编借.连接、运行D・编辑、编译、连接.运行
3.要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用
A.
D.函数模板
D.8
D・x
联函数B.重载函数C.部函数
4.设x=8,执行语句Y=x++,则y等于
A.6B.7C・9
5.下列运算符中,优先级最髙的是
A.*B.—>C.&&
6.关于new运算符的下列描述中,错误的是
A.它可以用来动态创建对象和对象数组
B.使用它创建的对彖和对象数组可以使用运算符delete删除
C.使用它创建对象时要调用构造函数
D.
使用它创建对彖数组时必须指龙初始值
10・假左a为一个整型数组名,则元素乱4]的字节地址为
□・类中能访问静态成员的函数是
C•构造函数D•析构函数
A.虚函数B.静态成员函数
22・下列说明语句中正确的是
A.inta,&ra=a,&&ref=raB・int&refa[10]
C・inta,&ra二a,&*refp=&raD・int*pi>*&pref=pi
13.关于对象概念的描述中,说法错误的是
A.对象就是C语言中的结构体
B.对象代表着正在创建的系统中的一个实体
C.对象是类的一个变量
D.对象之间的信息传递是通过消息进行的
14.有关多态性说法不正确的是
A.C++语言的多态性分为编译时的多态性和运行时的多态性
B.编译时的多态性可通过函数重载实现
C.运行时的多态性可通过模板和虚函数实现
D.实现运行时多态性的机制称为动态多态性
15.关于友元函数的描述中,错误的是
A.友元函数不是成员函数
B.友元函数只能访问类中私有成员
C.友元函数破坏隐藏性,尽量少用
D.友元函数说明在类体,使用关键字friend
16.
类中定义的成员默认访问属性为
A.publicB・private
17.拷贝构造函数的参数是
A.某个对象名
C.某个对象的引用划
18.关于类模板的说确的是
A.类模板的主要作用是生成抽象类
B.类模板实例化时,编译器将根拯给岀的模板实参生成一个类
C.在类模板中的数据成员具有同样类型
D.类模板中的成员函数没有返回值
19・下列有关重载函数的说法中正确的是
A.重载函数必须具有不同的返回值类型B.重载函数参数个数必须相同
C.重载函数必须有不同的形参列表D.重载函数需可以不同
20・当一个类的某个函数被说明为virtual时,在该类的所有派生类中的同原型函数A.都是虚函数
B.只有被重新说明时才是虚函数
C.都不是虚函数
D.只有被重新说明为virtual时才是虚函数
第二部分非选择题
二填空题(本大题共20小题,每小题1分,共20分)请在答题卡上作答。
21・C语言中scanf命令在C++中改用:
cin
22.假泄类AB中有一个公用属性的静态数据成员staticintbb:
在类外不通过对象爼给该成员bb赋值为10的写法:
intAB;bb=10;
23.在类部定义的公有(public)数据可以在类外进行存取,但保护protected数据和私有(private)数据不能在类外直接存取。
24.在C++中,虚函数帮助实现了类的多态性。
25.如果要把类B的成员函数voidfun()说明为类A的友元函数,则应在类A中加入语句
26.执行卜-列程序doublea=3.1415926,b=3.14:
cout«setprecisionQ«a<<"«
setprecisionQ«b«endl:
程序的输出结果是。
27.在C++中,访问一个指针所指向的对象的成员所用的指向运算符是。
28.基类的公有成员在派生类中的访问权限由决定。
29.由const修饰的对彖称为。
30.如果通过同一个基类派生一系列的类,则将这些类总称为»
31.为了实现运行时的多态性,派生类需重新泄义基类中的。
32.在C++中有两种参数传递方式:
传值和传c
33.C++中ostream的直接基类。
34.已知int*p=NULL,使用new为指针P申请一个存储大小为10的存放int型的空间,代
码为«
35.在编译指令中,宏定义使用指令。
36.每个对象都是所属类的一个。
37.函数重载时,编译系统会根据或形参的个数来区分。
38.静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是。
40.局部对象和全局对象中,在同一程序中生存期最长。
三、改错题(本大题共5小题,每小题4分,共20分)请在答题卡上作答。
下面的程序段中有一处错误,请在答题卡上抄写错误所在行并指出错误原因。
4-1.^include
usingnamespacestd;
base(inta){p=
I
intget(){relump;
I
I;
intmain()
{
baseb{3);cout«b.get();
42.#includeusingnamespacestd;classbase)inta;intget()|returna;
I
voidsetValue(intb){a=b;
I
intgeta(){returna;
I
I;
intmain()
{..
baseb;
b.setValue(7);return0;
43.#includeusingnamespace9td;classA|
intx;
inty;puhlic;
A(inta^intb){
y$b;
血get()Ireturnx4-y;
I
I;
X=5.
intmain()
I
COUt«弘get()«cndl;return0;
44.^include
usingnamespacestd;classA|intx;
public:
A(inta){
x=a;
I
voidseL(inta){
x=a;
I
voidget()(
cout«x«cndl;;
1
I;
intmain()
{
constAa(4);
a.set(6);
乩get();
a.set(10);
»•卯();return0;
I
45.#include
usingnamespacestd;classbase|
inta,b;
public:
voidsetzero()|
x=0;y=0;
I
voidshow()(
cout«x«nw«y«endl;
I
1;
intmain()\
baseb;
b.setzero(0,0);
return0;
I
四、完成程序题(本大题共5小题,每小题4分,共20分)请在答题卡上作答。
46・用简单选择法对10个数排序,使英从小到大排列。
#includewstdafx^h"
^includeusingnamespacestd;intmain(void)
I
inti;
intnum[10]ftJ;fbr()
cin»num[i]:
for(i=0;i<9;i-H-)
for(j=i+1;j<10;j++)if(num[i]>num[j]){
t=num[i];num[i]=niun[j];
for(i=0;i<10;i++)eout«nu.m[i]«1111;
I
47・打印以下图案:
#includenatdafx.hM解includeusingnam{
intj■巧
for()//i控制行号
I
fbr(j=1;jvi;j—)//j控制空格cout«1$
for()//n控制星号
cout«H.'・;cout«endl•
48.任意输入10个同学的成绩,汁算苴平均成绩。
要求用函数averageOHM平均成绩,主函数输入数据并输出结果。
#includewstdafi.h”
#includc
usingnamespacestd;
voidmain(void)
I
floataverage(floataf]);
flcAtSftre[10];
for()
I
cin»score[i];
I
cout«,waverage:
H«average(score)«endl;
I
floataverage(floata[])
I
floatsum=0;
for(inti=0;i<10;i++)|
I‘
return(sum/10};
I
49.编一个函数to_lower(),实现将字符串中的大写字母转换成相应小写字母。
主函数输入数据并输出结果。
#include”stdafe.h"
#include
■
voidmain(void)
I
voidtoJower(chara[]);
char9tr[10];
ciu»str;
to—lower(str);
cout«str«endl;
1
voidto_lower(chara[])
I-
fbr(inti=0;i<订!
二';i卄)
if()
a[i]+=32;
I
50・下而程序用来求直角三角形斜边长度。
#include#include
classPoint
Iprivate:
doublex,y;
public:
Point(doublei=0,doublej=0)|x=i;y=j;)
Point(Point&p)
classLine
|private;
Pointpl9p2;
II
publics
UnA(Point&xplfPoint&xp2);
doubleGetLength.();
h
doubleLine:
;Getlxjngdi()
1doubledx=p2.x-pl.x;
doubledy=p2・y一p1・y;returndx*dx+dy*dy);}.
voidmain()
jPointpl_p2(6,8);
LineLI(plfp2);
cout«LI■G^tLength(》«endl;
5.程序分析题(本大题共2小题,每小题5分,共10分)请在答题卡上作答。
5i・给如下而程序输岀结果。
^include
classBase
|private:
intY;
public:
Base(inty=0)|Y=y;cout«11Base(H«y«w)\nM;|
~Base()[couit«"~Ba&e()\nM;|
voidprint()|cout«Y«nw;|
I;
classDerived:
publicBase
|private;
intZ;
public:
Derived(intyfintz)
|Z=z;
cout«"Derived(w«y«M»w«z.«w)Xn";
I
~Derived(){cout«w-Derived()\nn;)
voidprint()
IBase:
:
print();
I
I;
voidmain()
|Derivedd(10F20);
d.print();
)
52.给岀下面程序输出结果。
#indude”iostream,h理
voidmain()
I
intx,yTz;
x=3;
y=x卄:
z=++x;
cout«frx=f,«k«u;y=1t«y«n;z="«z«endl;
}
六、程序设计题(本大题共I小题,共I0分)
请在答题卡上作答。
53.写一个程序,定义一个抽象类Shape,由它派生3个类:
Square(lE方形)、Trapezoid(梯形)和Triangle(三角形卜用虚函数分别计算几种图形而积、并求它们的和。
要求用基
类指针数组,使它每一个元素指向一个派生类对象。
#include
classShape
jpublic:
virtualdoublearea()const=0;
h
绝密*启用前
2015年10見高等教育自学考试全国统一侖题考试
C+亠程序设计试题答案及评分参考
(课程代码04737)
一、单•项选择執本大超共20小題,毎小趣I分涉”9)
1.B2.D3.A4.D5.B6门7.D
Il.B12D13.A34.C15.B817.C
二填空做本大题共20小题,毎小題1分•共20分)
21.cin
24.多态性
27.—>
30.类族
33.ios
36.实例
39.friendvoidB:
:
fifht)j,
三、改错fiK本大邇其5小题■毎小题4分,共20分)
41.答案mump;锚。
加()函数的返回值应该是讪授变般師代码中£期)返回的是im痰指针&自彩单科包过qql65816E2修孜;将r*EEP)修改为gxm♦p;
42’答轧b・^Valuc(7)熄私有曲数,不能宜接诟孔無改朋3皿1叔血)函数声明为公有函数g
43;答案注=6钳宀为静至数据成乩该赋值形式错课。
修改”mAj:
x=5j
44•答案心财A・(4);钳。
■雄常时象•不能械更新。
修改:
将几定义为非常对煞a
45.答案;b•畑错离因为类中不存在带有两个形参的zcr(>函数。
條改;将B.seteero(0t0);修改为b.setzero()i
四、完成程庠题(本大屢共5小題,每小题4分,共20分)
5.B
8.C9.BJO.C
18.B19.C20.X
22.intAB--bhx|0;
25.friendvoidB:
:
fun();
2$.访问控制方式或维承方式
31・龜苗数
34p.=newint^lOl4
3?
.形参的类型
23,保护(pwuxtcd)数据
26.3.1416,3•也
沙.常对隸
31引用
35.#dcGne
38・友元函数
40.全局对隸
46.
答案:
inti=0;i<105j^-
num[j]=1
47.
答案dnti
n=9;n>=2ti-1•11—
48.
答案:
i"ie0;i<|e):
i44-
fl-um4<=a[订
49.
答案!
usinxnamespace馳d
a[i]k'A'&&a[i]
50.
答jfopndUne;
plOp】)“2(叔)
[解析]友元类的使用,定义line是Roint类的友元类•成刼対叙勺初姑化采用列表的形式。
五JS序分析画聿大题共2小甌毎小題5分.共10分,
51.答案:
Baw(LO)
D«rived(10,20)
1020
“Derived()
~Baac()
52.答^:
x=5;y=3;x=5
04737C卄輕序设计试題答窠及评分参考笫1页(共2贰
六、養序设计題(本大题共10分)
51答案:
classSquare:
;publicShcfie
Ipublic*
Squarc(double|\
doublearea()const|relumside*bide;|private:
doubleBide;
L
classTrapezoid;publicShape
Ipublic:
Trapezoid(doublei,doublej,doublek):
a(i;,b(j),b(k)
II
doublearca()con»t|relum((a+b)*h/2);[private:
doubleabh;
Ii
classTriangle:
publicShape
{public:
Triangle(doobEei,doublej)«w(i)fh(j)
II
dauihlenrea()const|return(w*h/2)$|privaic:
doubleWjh;
I3
voidmain()
i
Shape*p[5];
Squaresft(5);
Trapcwjidtd(2,5.4”
Trianglele(5t8);
p[0]二&SC;
p[i]=&t4i
p[Z]=&(€】
douMada=0;
for(jntis0;i<3;i++)
[da+=p[i]->nrca();|
cwt«n总面积是;r,«d$«ciidl;
04737C++程序设计试题答案及评分参考第2页(共2页)