2023年广东省汕尾市全国计算机等级考试C++语言程序设计真题(含答案)_第1页
2023年广东省汕尾市全国计算机等级考试C++语言程序设计真题(含答案)_第2页
2023年广东省汕尾市全国计算机等级考试C++语言程序设计真题(含答案)_第3页
2023年广东省汕尾市全国计算机等级考试C++语言程序设计真题(含答案)_第4页
2023年广东省汕尾市全国计算机等级考试C++语言程序设计真题(含答案)_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2023年广东省汕尾市全国计算机等级考试

C++语言程序设计真题(含答案)

学校:班级:姓名:考号:

一、1.选择题(10题)

l.MyClock为一个类,则指向“\1丫。℃1^口;”语句时,调用该类构造函

数()次。

A.lB.2C.3D.4

2.类MyClass的定义如下,若要对value赋值,则下面语句正确的是

()O

classMyClass

(

public:

MyClass(){}

MyClass(inti){value=newint(i);}

int*value;

};

A.MyClassmy;my.valuer10;

B.MyClassmy;*my.valuer10;

C.MyClassmy;my.*valuer10;

D.MyClassmy(lO);

3.有以下程序#include<iostream.h>floatfun(intx,inty){return(x+y);}

voidmain(){inta-2,b=5,c=8;cout<<fun((int)fun(a+c,b),a-c);}

程序运行后的输出结果是()。

A.编译出错B.9C.21D.9

4.若定义cin>str;当输入ObjectWindowsProgramming!所得的结果是

str()

A.ObjectWindowsProgramming!

B.Object

C.ObjectWindows

D.ObjectWindowsProgramming

5.下列程序执行后的输出结果是()。voidfuncl(inti);voidfunc2(inti);

charst[]="hello,friend!^^;voidfuncl(inti){printf("%c",st[i]);if(i<

3){i+=2;func2(i);}}voidfunc2(inti){printf("%c",st[i]);if(i<3){i+=2;

funcl(i);}}main(){inti=0;funcl(i);printf("\n");}

A.helloB.helC.holD.hlm

6.下列程序的运行结果是#include<iostream.h>voidfun(int*a,int*b)

{int*k;k=a;a=b;b=k;}voidmain(){inta-3,b=6,*x=&a,*y=&b;

fun(x,y);cout<<a<<""<<b;}

A.63B.36C.编译出错D.O0

7.数据库管理系统是()。

A.操作系统的一部分B.在操作系统支持下的系统软件C.一种编译系

统D.一种操作系统

8.下列叙述中,不属于结构化程序设计方法的主要原则的是()。

A.A.自顶向下B.由底向上C.模块化D.限制使用goto语句

9.以下都是C++语言标识符的是()。

A.dsfa,df4,f$B.huhj,aA,k2C.3k,h,j_9D._ok,jk,k8

10.下列程序的输出结果是#include<iostream.h>voidmain()

{char*str="12123434";intxl=0,x2=0,x3=0,x4=0,i;for(i=O;str[i]!=

'\0';i++)switch(str[i]){case'l'X4++;case'2':X3++;case'3':X2++;case'4':

X1++;}cout<<X1<<<

A.8,6,4,1B.8,6,3,2C.8,8,4,1D.8,6,4,2

二、单选题(13题)

11.下列选项中正确的定义语句是()。

A.doublea;b;B.doublea=b=7;C.doublea=7,b=7;D.double,a,b;

12.下面程序的运行结果为()。

#include<iostream.h>

voidmain

(

for(inta=0,x=0;!xa<=10;a++)

a++:

cout«a«endl:

A.10B.11C.12D.0

13.下面描述中,符合结构化程序设计风格的是______o

A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻

B.模块只有一个入口,可以有多个出口

C.注重提高程序的执行效率

D.不使用goto语句

14.已知函数f的原型是voidf(int*a,long&B.;,变量vl、v2的定义是:

intvl;long:v2;下列调用语句中正确的是()。

A.f(vl,&v2);B.f(vl,v2);C.f(&vl,&v2);D.f(&vl,v2);

29.若有如下程序:

#include<iostream)

usingnamespacestd;

classTestClass

(

public:

voidwho(){cout<<°TestClassw<<endl;}

classTestClassl:publicTestClass

(

public:

voidwho(){cout<<MTestClasslw<<endl;

intmainO

|

TestClass*p;

TestClasslobjl;

p=&objl;

15p->who();

return0;

)

则该程序运行后的输出结果是(兀

A.TestClassl,B.TestClassC.0D.无输出

16.有如下程序;

#include<iostream>

usingnamespacestd;

classBase{

public:

voidoutput(){cout«1;}

virtualvoidPrint(){cout«'B';}

);

classDerived:publicBase{

public:

voidoutput(){cout«2;)

voidPrint(){cout«'D';)

);

intmain(){

Base*ptr=newDerived;

ptr->output();

ptr->Print();

deleteptr;

return0;

)

程序的输出结果是

A.1BB.1DC.2BD.2D

17.下列关于模板的说法正确的是()。

A.模板的实参在任何时候都可以省略

B.类模板与模板类所指的是同一概念

C.类模板的参数必须是虚拟类型的

D.类模板中的成员函数全部都是模板函数

18.已知函数FA调用函数FB,若要把这两个函数定义在同一个文件中,

则()o

A.FA必须定义在FB之前

B.FB必须定义在FA之前

C.若FA定义在FB之后,则FA的原型必须出现在FB的定义之前

D.若FB定义在FA之后,则FB的原型必须出现在FA的定义之前

19.有如下函数模板声明:template<typenameT>TMax(Ta,T

b){return(a>-b)?a:b;}下列对函数模板Max()的调用中错误的是()。

A.Max(3.5,4.5)

B.Max(3.5,4)

C.Max<double>(3.5,4.5)

D.Max<double>(3.5,4)

20.在C++中使用流进行输入输出,其中用于键盘输入的对象是【】

A.cerrB.cinC.coutD.cfile

21.下列说法正确的是()。

A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地

B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地

C.类的内联函数必须在类体内定义

D.类的内联函数必须在类体外通过加关键字inline定义

22.对于长度为n的线性表,在最坏情况下,下列各种排序法所对应的

比较次数中正确韵是()。

A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-

1)/2

30.有如下程序

#include<iostream.h>

voidmainO

{charch[2][5]={”6937“,“8254”},共p[2]>

inti.j,s=O;

for(i=0|i<2;i++)p[i]=ch[ij;

for(i=0;i<2;i++)

for(j=0$p[i][j»\0<j+=2).

s=10*r0S

cout<<S|)

该程序的输出结果是().

A.69825B.63825

23.C.6385D.693825

三、2.填空题(12题)

24•一个项目具有一个项目主管,一个项目主管可管理多个项目,则实

体“项目主管”与实体“项目”的联系属于【】的联系。

25.在下面程序的横线处填上适当的内容,使程序执行后的输出结果为

1/2005o

#include<iostream.h>

usingnamespacestd:

classDate

public:

Date(intm=l,inty=0):month(m.year(y}{}

voidPrint(){cout<<month<<<<year<<end1;}

operator+(constDate&dl,constDate&d2;

private:

intmonthyear;

);

operaror+(constDate&d1,constDate&d2)

intyear,month;

year=dl.year+d2.year;

month=dl.month+d2.month;

year+=(month-1)/12;

month=(month-1)%12+1;

returnDate{month,year):

)

voidmain()

{

Datedl(3,2004),d2,d3(10);

d2=d3+dl;

d2.Print();

)

26.数据库设计分为以下6个设计阶段:需求分析阶段、【】、逻辑设计

阶段、物理设计阶段、实施阶段、运行和维护阶段。

27.派生类构造函数的执行顺序是先执行【】的构造函数,然后执行成

员对象的构造函数,最后执行[】的构造函数。

28.若要访问指针变量p所指向的数据,应使用表达式o

29.高度为h(h〉O)的二叉树最少有【】个结点。

30.设某循环队列的容量为50,头指针front=5(指向队头元素的前一位

置),尾指针rear=29(指向队尾元素),则该循环队列中共有个元

素O

31.若表达式(x+(y-z)+(m/n))+3中的变量均为double型,则表达式值的

类型为。

32.为解决在多重继承环境中因公共基类带来的问题,C++语言

提供了虚基类机制。

33.软件维护活动包括改正性维护、适应性维护、维护和预防性

维护。

34.类。stream的成员函数【】用于执行无格式输山,成员函数put用

于输出单个字符。

35.假设inta-I,b=2;则表达式a+++--b的值为°

四、程序改错题(10题)

36.使用VC++6.0打开考生文件夹下的源程序文件

1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现

的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在

******error******的下面。

试题程序:

#include<iostream>

#include<fstream>

!!********enor********

usingstd;

voidWriteFile(char*s)

ofstreamout1;

1I********enor********

outl.open("l.txt",binarylapp);

for(inti=0;s[i]!=0;i++)

!1********enor********

outl.puts(s[i]);

)

outl.close;

)

voidClearFile

ofstreamout1;

outl.open("l.txt");

outl.close;

)

intmain

chars"024];

ClearFile;

cout«"pleaseinputastrin9:"«endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

)

37.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序

运行有问题,请改正main函数中的错误,使程序的输出结果为:

number=l

number=10

number=100

注意:不要改动main函数,不能增加或删除行。也不能更改程序的结

构,错误的语句在//******errc)r******的下面。

试题程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

)

voidSetNumber(intm)

(

number=m;

)

intGetNumberconst

returnnumber;

}

voidPrintconst

cout«"number="«number«endl;

private:

intnumber;

};

voidmain

(

I!********enor********

TCobjl;

objl.Print;

TCobj2(3);

II********error********

objl.number=10;

!1********ej*j*or*******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

}

38.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,但该程

序运行有问题,请改正main函数中的错误,使该程序的输出结果正

确。

程序输出:

8

8

注意:错误的语句在/********error********/的下面。修改该语句

即可,其他的语句不能修改。

试题程序:

#include(iostream.h>

classCO

(

public:

I********e£i*or********/

staticintn=O:

CO

(

n++:

)

-CO

{

n—:

)

):

I********error********/

intCO::n;

voidmain

(

COobj;

COobj2⑺;

CO*C=NULL:

c=&obj:

I********error********

eout«C.n«endl;

cout«CO::n«endl;

39.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运

行时有错误,请改正程序中的错误,使得程序输出:

9,8,7,6,5

注意:错误的语句在/********error********/的下面,修改该语句即

可。其他的语句不能修改。

试题程序:

#include(iostream.h>

classTC

{

I********error********/

TC(inti)

(

m_i=i;

)

voidprint

(

cout«—m_i«,;

)

public:

intm_i;

intmain

!********error********/

inti;

TC04(10);

while(i>5)

!****************I

i++:

04.print;

cout«endl;

returnO;

)

40.使用VC++6.0打开考生文件夹下的源程序文件1.cppo本程序要

求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输

入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕

中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******error******的下面。

试题程序:

#include<iostream.h>

voidmain

inti=O;

charstr[120];

cout«"Enterastringendwith?."«endl;

!1********enor********

cin.getline(str,120);

!1****************

while(str)

I!********error********

if(str[i])=a)

str[i]=str[i]-a+A;

i++;

)

cout«str«endl;

return;

41.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运

行时有错,请改正其中的错误,使程序正常运行,输出的结果为

Constructor,i=0,

Destructor

注意:错误的语句在//******errc)r******的下面,修改该语句即可。

试题程序:

#include(iostream.h)

classTC

inti;

public:

TC;

voiddisplay;

-TC;

);

II******error******

TC:TC

(

cout«"Constructor"«",";

i=0;

)

II******epj*or******

TC:display

(

tout«"i="«i<<","«endl;

)

Ii******error******

TC:TC

(

COUI«"Destructor"«endl:

)

voidmain

(

TCa;

a.display;

42.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序

运行时有错误,请改正错误,使程序正常运行,并且要求最后一个

catch必须抛出执行的任何异常。

程序异常,输出信息为

error

0

ERROR

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在//******error******的下面。

试题程序:

#include<iostream.h)

intmain

(

try

(

throw("error");

)

II********error********

catch(chars)

(

cout«s«endl;

)

try

(

throw((int)0);

)

I!********error********

catch

cout«i«endl;

try

(

throw(O);

throw("error");

)

!!********enor********

catch

cout«"ERROR"«endl;

returnO;

43.使用VC++6.0打开考生文件夹下的源程序文件

1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实

现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结

构,错误的语句在

1I******error******卜|Hjo

试题程序:

#include<iostream>

#include<fstream>

II********error********

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

II********enor********

outl.open("l.txt",binarylapp);

for(inti=0;s[i]!=0;i++)

{

I!********enor********

outl.puts(s[i]);

)

outl.close;

)

voidClearFile

(

ofstreamout1;

outl.open("l.txt");

outl.close;

)

intmain

(

chars[1024];

ClearFile;

cout«"pleaseinputastrin9:"«endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

44.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序

运行时有错。请改正程序中的错误,使程序输出的结果为

100

37

32

注意:错误的语句在//******error******的下面,修改该语句即

可。

试题程序:

#include<iostream.h>

II******epj*or******

voidmain

(

II******error******

intm=0142:

II******error******

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

45.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序

运行时有错,请改正其中的错误,使程序正常运行,输出的结果为

Constructor,i=0,

Destructor

注意:错误的语句在//******err()r******的下面,修改该语句即

可。

试题程序:

#include(iostream.h)

classTC

(

inti;

public:

TC;

voiddisplay;

-TC;

);

II******error******

TC:TC

(

cout«"Constructor"«",";

i=0;

)

I!******error******

TC:display

tout«"i="«i<<","«endl;

II******error******

TC:TC

{

COUI«"Destructor"«endl:

)

voidmain

(

TCa;

a.display;

)

五、综合应用题(2题)

46.使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定

义的类不完整,按要求完成下列操作,将类的定义补充完整。

⑴定义类的公有数据成员函数NO、Name[32],其中NO是int型的数

据,Name[32]为字符型。请在注释1后添加适当的语句。

(2)完成函数Set的定义,分别设置NO和Name的值,请在注释2后添

加适当的语句。

⑶完成函数print,请在注释3后添加适当的语句,输出结果如下:

N0=12345

Name=HelloWorld!

(4)添加默认构造函数,设置NO为0,Name为空,请在注释4后添加

适当的语句。

注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其

他的程序代码。

试题程序:

#include<iostream.h>

classTC

{

public:

II*1^*|z*|**|*

(

No=no;

for(inti=0;strName[i]!=0;i++)

(

Name[i]=strName[i];

Name[i+1]=0;

)

voidprint()

//********3********

)

TC()

II********4********)

};

intmain()

TCstu:

stu.Set(12345,"HelloWorld!");stu.print();

returnO;

47.使用VC++6.0打开源程序文件3.cpp。其中类TC用于把文件

输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的

大小是文件的前一半,另外一个文件的大小是剩余部分。此程序将

in.txt文件中的内容输出到

屏幕,并且将文件按照以上方式分割,存于文件。utl.txt和out2.txt

中。

其中定义的类并不完整,按要求完成下列操作,将类的定义补充完

整。

(1)从输入文件中获得一个字符,并判断是否到文件结

尾,如果到文件结尾,则退出循环。请在注释1后添加适当的语句。

⑵把获得的输入文件的内容存储到bur中,并且用len

记录下文件的长度。请在注释2后添加适当的语句。

(3)将输入文件的后一半内容存储在第二个文件中,请

在注释3后添加适当的语句。

(4)使用文件流对象打开输入文件in.txt,请在注释4

后添加适当的语句。

注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修

改其他的程序代码。

试题程序:

#include<iostream.h>

#include<fstream.h>

#include<stdlib.h)

classTC

{

public:

TC(char*fileName)

(

len=O;

fstreaminfile;

infile.open(fileName,ios::in);

charch;

while

(

cout«ch;

IIsj*

}

infile,close;

}

voidsplit

(

fstreamoutfilel;

fstreamoutfile2;

outfilel.open("outl.txt",ios::out);

outfile2.open("out2.txt",ios::out);

inti=0:

for(i=0;i<len/2;i++)

(

outfilel«buf[i];

)

do

(

)

while(i!=len);

outfilel.close;

outfile2.close;

)

prwate:

intlen;

charbuf[1024];

};

voidmain

(

//********4********

TCobj;

obj.split;

return;

六、3.综合应用题(2题)

48.使用VC6打开考生文件夹下的工程test40_3o此工程包含一个

test40_3.cpp,其中定义了类CVector,但该类的定义并不完整。请按要

求完成下列操作,将程序补充完整。

⑴完成类CVector构造函数的定义,把传入的int型参数a和b分别赋

值给类的成员变量x和yo请在注释“〃**1**”之后添加适当的语句。

⑵完成类CVector的"+”运算符重载函数的定义,使Cvector类的两个对

象相加时可以直接使用符号“+”,并且结果仍然为类Cvector的对象,请

在注释“〃**2**”之后添加适当的语句。

(3)在主函数中添加适当的语句,把类Cvector的对象a和b相加,并且

把结果保存在对象c中,最后以“x,y”的形式输出在屏幕上,请在注释

“〃**3**,,之后添加适当的语句。

源程序文件test40_3.cpp清单如下:

#include<iostream.h>

classCVector

(

public:

intx,y;

CVector(){};

CVector(int,int);

CVectoroperator+(CVector);

);

CVector::CVector(inta,intb)

(

〃**]**

CVectorCVector::operator+(CVectorparam)

〃**2**

temp.y=y+param.y;

return(temp);

)

intmain()

(

CVectora(3,1);

CVectorb(1,2);

CVectorc;

return0;

)

49.使用VC6打开考生文件夹下的工程test5_3o此工程包含一个源程

序文件test5_3.cpp,其中定义了一个类Pn,用于求n!。请按要求完成下

列操作,将程序补充完整。

⑴定义私有数据成员value(存放n)和fact(存放n!),它们都是ht型的数

据。请在注释“〃**1**”之后添加适当的语句。

⑵完成默认构造函数Pn的定义,使Fn对象的数据成员value值为i,

fact值为lo请在注释“〃**2**”之后添加适当的语句。

⑶完成函数Cal的定义,该函数计算value的阶乘,并将运算结果保存

在fact中,要求使用while循环实现。请在注释“〃**3**”之后添加适当

的语句。

(4)将主函数补充完整,直接调用类的成员函数,在界面上输出value的

阶乘值。请在注释“〃**4**”之后添加适当的语句。

注意;除在指定位置添加语句之外,请不要改动程序中的其他内容。

源程序文件test5_3.cpp清单如下:

#include<iostream.h>

classFn

(

〃**1**

public:

Fn(inti);

voidCal();

voiddisp();

);

Fn::Fn(inti)

(

〃**2**

)

voidFn::Cai()

(

〃**3**

fact*=i—;

)

voidFn::disp()

(

cout<<value<<"!="<<fact<<endl;

)

voidmain()

(

intvalue;

cout<<"Enterthevalue:";

cin>>value;

FnA(value);

)

参考答案

LA解析:*p不调用类的构造函数,*p并不定义类对象,而是定义了一

个指针指向一个MyClock的对象。

2.DD。【解析】因题目中定义的指针value是指淘变量i的,所以直接利

用语句MyClass(inti){value=newint(i);}对value进行赋值即可。

3.B解析:本题的运算过程是fun((int)fun(a+c,B,a-C,fun((int)fun(10,

5),2-8),fun((int)15.000000,-6),fun(15,-6)=9。

4.B

5.C

6.B解析:函数的参数不仅可以是整型、实型、字符型等数据,还可以

是指针类型。它的作用是将一个变量的地址传送到另一个函数中去。在

本题解析中,我们试图将这一问题解释清楚!

大家可以考虑一下利用下面这函数可不可以实现a和b的互换。

swap(intx,inty)

{intt;

t=x;

x=y;

y=t

)

如果在main函数中用swap(a,b),会有什么结果呢?在函数调用开始时,

a的值传送给X,b的值传递给y。执行完swap。函数后,x和y的值是互

换了,但main。函数中的a和b并未互换。也就是说由于“单向传递”的

“值传递”方式,形参值的改变无法传递给实参。

为了使在函数中改变了的变量值能被main()函数所闻,不能采取上述办

法,而应该用指针变量做函数参数。布函数执行过程中使指针变量所指

向的变量值发生变化,函数调用结束后,这些变量值的变化被保留下来,

这样就实现了调用函数改变变量的值,在主凋函数中使用这些改变了的

值的目的。

swap(int*pl,int*p2)

{intp;

p=*pl;

*pl=*P2;

*p2=p;

)

注意交换*Pl和*p2的值是如何实现的,如果写成下面这样就有问题了!

swap(int*Pl,int*p2)

{int*P;

*p=*Pl;/*此语句有问题*/

*pl=*p2;

*p2=*p:

}

*pl就是a,是整型变量。而*p是指针变量p所指向的变量,但p中并

无确切地址,用*p可能会造成破坏系统的正常工作状态。应该将*pl的

值赋给一个整型变量,用整型变量作为过渡变量实现*P1和*p2的交换。

7.B

数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操

纵、数据维护、控制及保护和数据服务等,是一种在操作系统支持下的系统软件,因此本

题答案为B)o

8.B

解析:结构化程序设计方法的主要原则可以概括为以下4个方面,即

自顶向下、逐步求精、模块化及限制使用got。语句。

9.D解析:此题考查的是标识符。标识符是由数字、字母以及下划线构

成,其中第一个字符必须是字母或下划线,中间不能有空格;标识符的

长度是任意的,但由于编译系统的限制一般不超过31个字符;标识符

中的大小写字母是不同的;定义标识符时不能采用系统的保留字。符合

这些要求的只有选项D)。

10.D

11.C

Co【解析】本题考查变量的定义。选项A是两条语句,用分号隔

开,只定义了a为double型;选项B中,不允许这种声明赋值方式,

语法错误;选项D中,类型与变量名之间不加逗号;选项C为正确

的。

12.C

在进入最后一次循环时a=10,在循环体内执行“a++;”后a=ll,执行

完该次循环体计算for循环的增量部分后a=12小于10,循环结束。

13.A解析:结构化程序设计方法的四条原则是:①自顶向下;②逐步求

精;③模块化;④限制使用goto语句。“自顶向下”是指在程序设计时,

先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。“逐步求

精”是指对复杂问题应设计一些子目标作过渡,逐步细节化。“模块化”是

指一个复杂问题由若干稍简单的问题构成;解决这个复杂问题的程序,

也应由若干稍简单问题的小程序组成。

14.D

函数参数的3种传递方式:①将变量名作为形参和实参,即传值方

式;②传递变量指针;③引用形参,本题中函数f的第一个形参为指

针,那么调用f函数时,第一一个参数必须是地址,所以必须是

&V1.第二个形参为引用,所以对应实参为V2即可。故本题答案为

Do

15.A

16.B

17.D

Do【解析】在C++中规定如果一个类被声明为类模板,那么其中的

所有成员函数就都成为了模板函数。

18.D\n如果使用用户自己定义的函数,而该函数与调用它的函数(即主

调用函数)在同一程序单元中,且位置在主调用函数之后,则必须在调用

此函数之前对被凋用的函数作声明。

\n

19.B解析:此题考查的是函数模板的引用。引用模板函数和引用一般

函数在语法形式上基本相同。需要注意的是说明一个函数模板后,当编

译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否

匹配函数模板中的对应形参。本题选项B)中,编译系统从第一个参数

“3.5”获得信息“double型数据”和从第二个参数获得信息“int型数据”两

者矛盾,错误;A、选项C)正确:选项D)中,函数名后的<double>是

模板实参表,编译系统会将血型的形参“4”自动转化成double类型。

20.B

考点点击:本题主要考查的知识点为预定义流对象。要点透析:cin为

标准输入,即键盘输入。cout为标准输出,即屏幕输出。

21.B解析:本题考查的是内联函数的定义,引入内联函数是为了解决

程序中函数调用的效率问题,是以目标代码的增加为代价换取时间的节

省;一般函数在运行时被调用,而调用的内联函数在编译时就被替代了,

如果不加inline关键字,则编译器会将在类说明部分定义的任何函数都

被认定为内联函数。

22.D

23.C

24.一对多(或1:N)一对多(或1:N)解析:两个文体集间的联系实际上

是实体集间的函数关系,这种函数关系可以有3种,即一对一(1;1)的

联系、一对多(1:N)或多对一(N:1)的联系和多对多(M:N)的联系。

25.friendDate;DatefriendDate;Date解析:本题考核类与对象、运

算符的重载。题中运算重载函数中的参数表中有两个参数,所以是

作为友元函数重载(因为“+”是一个二元运算符,作为成员函数重载时参

数表中只有一个参数,对应于第二个参数,而第一个操作数就是对象本

身,仅以this指针的形式隐藏在参数表中),实现的功能是将参数对象中

的成员变量month、year的进行对应相加,实现年月的相力口-题中运算符

重载函数的返回值的类型是类Date,所以第一个空格处填入'friendDate;

第二个空格处完善运算符重载函数的定义,缺少的是函数返回值的类型

“Date”

26.数据库概念设计阶段数据库概念设计阶段解析:数据库设计分为以

下6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理

设计阶段、实施阶段及数据库运行和维护阶段。

27.基类派生类基类\r\n派生类解析:本题主要考查的是派生类构造函

数的执行顺序,在C++语言中构造函数的执行顷序是先基类后派生类,

而析构函数的执行顷序正好相反,是先调用派生类后调用基类。

28.*p

29.h

30.24

31.doubledouble解析:同类数据进行四则运算类型不变。

32.二义性二义性

33.256.36O256.360解析:str表示把数值转化为字符串。字符串函数

大都以类型说明符结尾,表明函数的返回值为字符串,但是在Visual

Basic6.0中,函数尾部的“$''也可以省略,功能相同。因此本题的结果为

256.36。

34.write

35.22解析:因为运算符++和--都是右结合的且优先级高于双目运

算符+,所以上式的运算顺序为先a++,--b,再a+b,最后a自加

lo

36.(1)应改为"usingnamespacestd;

\n(2)应改为“outl.open('l.txt',ios::binary|ios::app);"。

5,

\n(3)应改为“outl.put(s[i]);o

\n【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,

对于C++中弓I入标准命名空间的格式,缺少namespace,所以第1处

的语句修改为“usingnamespacestd;第2处,调用成员函数open中,

输入、输出方式是在ios类中定义的,所以“out1.open是.txt',binary

app);”语句缺少类ios,即第2处的语句修改为“outl.open。.txt',ios::

binary|ios::app);”。第3个标识应该用流成员函数put输出字符,所

以第3处的语句修改为“outl.put(s[i]);

37.(1)应改为"TCobjl(l);

(2)应改为“Objl.SetNumber(lO);

(3)应改为“0bj2.SelNumber(lOO);

【解析】本题第1处的“TCobjl;”语句是声明TC类的对象Objl,根据

TC类构造函数的定义TC(inti),存在整型参数,并且题目要求第一个

输出结果两1,所以补全参数1,即第1处的“TCobjl(l);第2处处

的“objl.number=10;”应该是调用成员函数SetNumber赋值。在C+

+中成员函数的使用形式应该是:对象名.成员函数,所以修改为

“objl.SetNumber(lO);类是对象的抽象,而对象是类的具体实

例。第3处“TC.SetNumber(lOO);”语句中的TC为类,并不是对象,

这里应该使用定义的对象,即obj2,所以将语句修改为

“obj2.SetNumber(lOO);

38.(1)ustaticintn=O,,^Z^Justaticintn;

(2)uintCO::n;”应改为“intCO::n=0;

(3)“cout«c.n«endl;"应改为"cout«c->n<<endl;

【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1

处应改为“staticintn;",第2处要给n赋值,第3处输出时引用c的对

象,应改为"cout<<c->n«endl;"。

39.(1)应添加“public:

\n(2)“inti”应改为“inti(10);

\n(3)“i++;”应改为“i—;

\n【解析】本题主要考查的是成员的访问属性。成员的访问属性有公有、

保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类

的对象被访问。故应在构造函数前添加“public:“,否则该类无法被实例

化。变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造

参数,题目已要求使用后者。本题要求输出5个数,while的循环变量i

每次减1,在i>5时循环,故i初始化应为10。若循环中i每次增I,则

循环永远不会退出。

40.(1)应改为“ein.getline(str,120,?);

何2)应改为"while(str[i])"°

\n⑶应改为“if(str[i]>=a&&str[i]<=2)”。

\n【解析】本题中要求以输入字符“?”为结束符,用于字符输入的流成员

函数getline函数读入一行字符,格式为“cin.getline(字符数组,字符个

数,终止标志字符字所以第1处改为“cin.getline(str,120,?);第

2处的“while(str)”语句应该是判断字符串str中的每一个字符是否为结

束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,

则转换。所以应该修改为“while(str[i])”。第3处的“if(str[i]>=a)”语句是

判断字符str川是否为小写字符,而现有的语句只是判断字符是否大于a,

但是小写字符应该是a到2,所以修改为“if(str[i]>=a&&st巾]>=z)”。

41.⑴应改为“TC::TC”。

\n⑵应改为"voidTC::display”。

\n(3)应改为“TC::~TC”。

\n【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名

和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个类,使

用格式为“(类名)::〈成员函数〉((参数函数)),因此第1处应改为“TC::

TC”,默认构造函数没有参数。由第2处“TC=display”后的语句看,这

是在类外实现TC函数,因此也有作用域运算符使用错误问题,display

函数返回值为void,因此第2处的语句应改为“voidTC「display"。由第

3处的语句“TC::TC”可知,显然这里是在类外实现析构函数,析构函

数是一个特殊的函数,它的名称和类名相同,并在前面加“字符,用

采与构造函数加以区别,因此第3处的语句应改为“TC::~TC”。

42.(1)应改为"catch(char*s)”。

⑵应改为“cateh(inti)”。

(3)应改为"catch(…)”。

【解析】本题中第1个标识前的异常抛出语句为“throw("error");",其

中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类

型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语

句修改为“catch(char*S)"°第2个标识前的异常抛出语句为

€tthrow((int)0);",其中的类型为int。对应的异常捕捉语句catch中应

该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配

的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处

的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类

型,那么就用删节号"…''表示它可以捕捉任何类型的异常信息,即修

改为“catch(…)”。

43.(1)应改为"usingnamespacestd;"。

(2)应改为"outl.open("l.txt",ios::binaryIios::app);"。

(3)应改为“outl.put(s[i]);

【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,

对于C++中引入标准命名空间的格式,缺少namespace,所以第1处

的语句修改为“usingnamespacestd;第2处,调用成员函数open

中,输入、输出方式是在ios类中定义的,所以“outl.open("l.txt",

binaryIapp);”语句缺少类ios,即第2处的语句修改为

“outl.open("l.txt",ios::binaryIios::app);“。第3个标识应

该用流成员函数put输出字符,所以第3处的语句修改为

“outl.put(s[i]);”。

t4),

44.(l)voidmaino

(2)“intm=0144;

(3)“intn=OX25;”或"intn=0x25;”。

【解析】本题主要考查了主函数定义及幕同进制之间的转换,包括十

进制到八进制,十进制到十六进制。主函数定义的定义形式为

“main”,函数名之后必须是一对括号,因此第1处应改为"voidmairT。

cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发

现变量的初值不正确,十进制的100对应八进制的144,卡进制的37

对应十六进制的25,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论