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

下载本文档

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

文档简介

2023年广东省深圳市全国计算机等级考试

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

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

一、1.选择题(10题)

I.以下哪个基类中的成员函数表示纯虚函数()。

A.virtualvoidvf(int)

B.voidvf(int)=0

C.virtualvoidvf(=0)

0.virtualvoidvf(int){}

2.下面程序的执行结果是#include"iostream.h"void

main(){int*p,r;p=newin;*p=20;

r=sizeof(*p);cout<<r<<endl;delete

P;}

A.程序错误B.内存为20地址的大小.C.20D.4

3.执行如下程序,输出星号(*)的个数为#include<iostream>using

namespaeestd;classSample{public:Sample(){}~Sample(){cout<

<;}};intmain(){Sampletemp[2J,*pTemp[2];return0;)

A.lB.2C.3D.4

4.假定其中的x的单位是角度且不考虑兀值的精度,则与数学公式

,|cos(x)|等价的C++语言表达式是

A.sqrt(cos(x))

B.sqrt(abs(cos(x*3.14/180)))

C.sqrt(abs(cos(x*(/180)))

D.sqrt(fabs(cos(x*3.14/180)))

5.假定变量m定义为intm=7;则定义变量p的正确语句为()。

A.intp=&m;

B.int*p=&m;

C.int&p=*m;

D.int*p=m;

6.静态成员函数没有0。

A.返回值B.lhis指针C.指针参数D.返回类型

7.语句ofstreamf("SALARY.DAT”,ios_base::app);的功能是建立流对

象f,并试图打开文件SALARY.DAT与f关联,而且()。

A.若文件存在,将其置为空文件:若文件不存在,打开失败

B.若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新

文件

C.若文件存在,将文件指针定位于文件首;若文件不存在,打开失败

D.若文件存在,打开失败:若文件不存在,建立一个新文件

8.开发软件时对提高开发人员工作效率至关重要的是()。

A.操作系统的资源管理功能B.先进的软件开发工具和环境C.程序人

员的数量D.计算机的并行处理能力

9.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段

和数据库系统阶段。其中数据独立性最高的阶段是()

A.数据库系统B.文件系统C.人工管理D.数据项管理

10.下列关于运算符重载不正确的是0

A.运算符重载不能改变运算符的操作数个数

B.运算符重载不能改变运算符的优先级

C.运算符重载不能改变运算符的结合性

D.运算符重载能改变对预定义类型数据的操作方式

二、单选题(13题)

H.下面不属于同一函数模板的是()。

A.template<classtl>tlmax(tl&a,tl&b){...{template<classt2>t2

max(t2&a,t2&b){...}

B.template<classtl>tlmax(tla,tlb){...}template<classt2>t2max(t2

&a,t2&b){…}

C.template<classtl>tlmax(tl*a,tl*b)template<classt2>t2

max(t2&a,t2&b){...}

D.template<classtl>tlmax(tla,tlb){...}template<classt2>t2max(t2

&a,t2&b,t2c){...}

12.有下列程序:

#inc!ude<stdiO.h>

voidfun(char*s)

{while(*s)

{if(*s%2==(1)printf("%C”,*s);

s+十:

voidmain()

{chara[]={ngoodn);

fun(a);printf(nnH);

)

注意:字母a的ASCII码值为97,程序运行后的输出结果是()«A.dB.goC.god

D.good

13.下面关于数组的初始化正确的是

A.charstr[]={'a:b,'c'}

B.charstr[2]=

C.charstr[2][3]={{,a';b,},{'c',d},C?f}}

D.charstr()={'a'/b/c1)

14.下列运算符中全都可以被友元函数重载的是

A=,+,-,\B.[],+,(),newC.->,+,*,>>D.<<,>>,

+,*

15.有下列程序:

#include<stdiO.h>

voidmain()

intx=8:

for(;x>0;x—)

if(x%3){printf(M%d,”,x—),continue;}

printf("%d,",—x):

)

}

程序的运行结果是()oA.7,4,2B.8,7,5,2C.9,7,6,4D.8,5,

4.2

16.模板函数的真正代码是在()时候产生。

A.源程序中声明函数时B.源程序中定义函数时C.源程序中调用函数

时D.运行执行函数时

17.

28.对于语句cout《《setfilK'*的输出结

果是().

A.*********1*2B.********12

C.»»**»**1*2D.12********

18.下列叙述中错误的是()。

A.gets函数用于从终端读入字符串

B.getchar函数用于从磁盘文件读入字符

C.fputs函数用于把字符串输出到文件

D.fwrite函数用于以二进制形式输出数据到文件

19.以下叙述中正确的是

A.在类中,不作特别说明的数据成员均为私有类型

B.在类中,不作特别说明的成员函数均为公有类型

C.类成员的定义必须是成员变量在前、成员函数在后

D.类成员的定义必须放在类定义体内部

20.为用户与数据库系统提供接口的语言是

A.高级语言B.数据描述语言(DDL)C.数据操纵语言(DML)D.汇编语言

21.下列说法中不正确的是

A.数据库减少了数据冗余B.数据库中的数据可以共享C.数据库避免

了一切数据的重复D.数据库具有较高的数据独立性

22.定义如下枚举类型enum{Monday,Tuesday,Wednesday,Thrusday,

Fridays);则下列选项正确的是()。

A.表达式Wednesday==Friday的值是true

B.Dayday;day=3;

C.Dayday;day=Monday+3;

D.Daydayday=Tuesday+10;

23.C++语言中关于构造函数的说法正确的是()。

A.构造函数的函数名不必和类名相同B.构造函数只能有一个C.每个

类必定有构造函数D.构造函数必有返回值

三、2.填空题(12题)

24.如果一个工人可管理多个设备,而一个设备只被一个工人管理,则

实体“工人”与实体"设备”之间存在【】关系。

25.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率

都相等时,插入一个元素所需移动元素的平均个数为【】。

26.请在下列程序中的空格处填写正确的语句:

classSample(

public:

Sample(){}

~Sample(){}

voidSetData(intdatA){〃将Sample类成员变量data设置成形参的值

private:

intdata;

);

27.C++程序中的预处理命令以符号【】作为起始标记。

28.如下程序的输出结果是_____o

#include<iostream>

usingnamespacestd

classpumpkin{

public:

pumpkin(){++count;}

〜pumpkin(){-eount;}

staticvoidtotal_count(){cout<<count<<Hpumpkin(s)n<<endl;}

private:

staticintcount;

};

intpumpkin::count=0;

intmain(){

pumpkinplflO];

pumpkin::total_count();

return0;

)

29.如果要把返回值为void的函数A声明为类B的友元函数,则应在

类B的定义中加入的语句是【】。

30.若要在程序文件中进行标准输入输出操作,则必须在开始的#

include命令中使用头文件【]0

31.在程序设计阶段应该采取【】和逐步求精的方法,把一个模块的功

能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成

程序。

32.有如下程序:

#include<iostream>

usingnamespacestd;

classA{

public:

A(){cout<

~A(){cout<<"A";}

I;

classB{

Aa;

public:

B(){cout<<"BM;)

-B(){cout<

);

intmain(){

Bb;

return0:

)

程序的输出结果是_____o

33.C++语言的参数传递机制包括传值和传地址两种,如果调用函数时,

需要改变实参或者返回多个值,应该采取【】方式。

34.对于下列语句

char*strl="Hello”;

char*str2二."Hello";

*strl='P';

cout<<str2<<endI;

其输出结果为:[1

35.二分法查找仅限于这样的表:表中的数据元素必须有序,其存储结

构必须是_____O

四、程序改错题(10题)

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

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

number=l

number=10

number=100

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

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

试题程序:

#include<iostream.h>

classTC

(

public:

TC(inti)

(

number=i;

}

voidSetNumber(intm)

number=m;

)

intGetNumberconst

returnnumber;

voidPrintconst

(

cout«"number="«number«endl;

)

private:

intnumber;

);

voidmain

1

//****举举不小piTcr’”不

TCobjl;

objl.Print;

TCobj2⑶;

/«>1•*>1**>1•*>1•«>1•*>1»

//不不不不不不不小prrcr不不不不不不予不

objl.number=10;

!1********%0******

TC.SetNumber(100);

objl.Print;

obj2.Print;

}

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

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

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

中。

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

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

试题程序:

#include<iostream.h>

voidmain

(

inti=O;

charstr[120];

cout«HEnterastringendwith?."«endl;

//*3**1**1*

//不不不不不不不不prrcr不不不不干不不不

cin.getline(str,120);

while(str)

/1**•*****«

//不不不不不不不不prrcr不不不不不不不不

if(str[i])=a)

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

i++;

)

cout«str«endl;

return;

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

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

为:

sizeof(Sl)=5

sizeof(s2)=I0

sizeof(s3)=l

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

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

(1)不能删除assert()语句。

(2)只能修改后面的数字。

提示:assert函数如果为假,则会产生一个中断异常。

试题程序:

#include<iostream.h>

#include<asseil.h>

voidmain()

char*sl=,'abcM:

/1*****«

//不不不不不不不不prrcr不不不不不不不不

assert(sizeof(s1)==3):

cout«',sizeof(sl)=5,,«endl;

chars2[101=Mab":

assert(sizeof(s2)==2);

cout«nsizeof(s2)=10H«endl;

chars3=23:

//一如•如•1・■£,■[,■£«■£•

//小小小小小小小小prrcr小小小小小小小小

assert(sizeof(s3)==4);

cout«',sizeof(s3)=r,«endl;

return;

}

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

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

Constructor,i=0,

Destructor

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

可。

试题程序:

#include(iostream.h)

classTC

inti;

public:

TC;

voiddisplay;

〜TC;

);

/-X>

//******p]Tcr不不不不予不

TC;TC

cout«,,Constructor',«M,"

i=0;

)

/******errcr不不不不不不

TC:display

tout«',i=,,«i«n,M«endl;

)

/汴汴汴汴不举prmr不不不不不不

TC:TC

(

COUI«"Destructor"«endl:

)

voidmain

(

TCa;

a.display;

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

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

100

37

32

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

可。

试题程序:

#include<iostream.h>

!«*««*««*««*«

//****^**不**

voidmain

/小小小小小小errcr卒<*<*<**><•

intm=0142:

/

//不不不不不不prrcr不不不不不不

intn=0X27:

intq=32;

cout<<m<<endl;

cout<<n<<endl;

cout<<q<<endl;

return;

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

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

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

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

构,错误的语句在

I******cnx)r******的F面°

试题程序:

#include<iostream>

#include<fstream>

usingstd;

voidWriteFile(char*s)

ofstreamoutl;

outl.open("l.txt",binary|app);

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

/1

outl.puts(s[i]);

outl.close;

}

voidClearFile

ofstreamout1;

outl.open("l.txt");

outl.close;

)

intmain

chars[10241;

ClearFile;

cout«npleaseinputastrin9:u«endl;

cin.getline(s,1024);

WriteFile(s);

returnO;

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

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

能输入多行,当输入字符时,默认字符输入结束,最后把结果输出

到屏幕中。

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

构,错误的语句在//*****%1丁0产*****的下面。

试题程序:

#include<iostream.h>

voidmain

inti=O;

charstr[120];

cout«,,Enterastringendwith?.H«endl;

/

//*****汴*汴error不不予不不不不不

cin.getline(str,120);

/小小小小小小小小prmr不不不不不不不不

while(str)

%1••£•

不不不不不不不不error不不不不不不不不

if(str[i])=a)

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

i++;

cout«str«endl;

return;

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

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

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

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

构,错误的语句在

!!******eiTor******白勺~~j,।。

试题程序:

#include<iostream>

#include<fstream>

/

//•门*r*p不prr<、r干不干干干干干干

usingstd;

voidWriteFileCchar*s)

(

ofstreamout1;

outl.open(nl.txt",binary|app);

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

/

/f不*T*不*T**?*小*T*小m*/**^1**^不不小小不不不

outl.puts(s[i]);

outl.close;

)

voidClearFile

(

ofstreamout1;

outl.open("1.txt");

outl.close;

}

intmain

(

charsfl0241;

ClearFile;

cout«Hpleaseinputastrin9:u«endl;

cin.getline(s,1024);

WriteFile(s):

returnO;

)

44.使用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(intmi

(

number=m;

}

intGetNumberconst

(

returnnumber;

}

voidPrintconst

(

cout«',number=,'«number«endl;

)

private:

intnumber;

);

voidmain

TCobjl;

objl.Print;

TCobj2(3);

/t//不不不不不不不不error不不*小1*下*1*不*1«不不*1*不

objl.number=10;

II********error*%o******

TC.SetNumber(lOO);

objl.Print;

obj2.Print;

)

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

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

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

程序异常,输出信息为

error

O

ERROR

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

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

试题程序:

#include<iostream.h)

intmain

(

try

(

throw("error'1);

)

/不不不不不不不不error"不不不不不予不

catch(chars)

(

cout«s«endl;

)

try

(

throw((int)0);

}

/小小小小小小小小prrcr不不不不不不不不

catch

(

cout«i«endl;

)

try

(

throw(O);

throw(nerrorn);

}

/«>1•*>1**>1•*>1•«>1•*>1»

//不不不不不不不小prrcr不不不不不不予不

catch

(

cout«nERROR"«endl;

)

returnO;

)

五、综合应用题(2题)

46.请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程

proj3,其中声明的CDeepCopy是一个用于表示矩阵的类。请编写这个

类的赋值运算符成员函数Operators以实现深层复制。

要求:

泰卜本编去il6々IAI穴后;ZF"〃************aaa************"匕

“〃****************666*************''之间o不得修改程序的其他部

分。

注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile

已经编译为obj文件,并且在本程序中调用。

//CDeepCopy.h

#include<iostream>

#include<string>

usingnamespacestd;

classCDeepCopy

(

public:

intn;〃动态数组的元素个数

int*p;〃动态数组首地址

CDeepCopy(int);

〜CDeepCopy;

CDeepCopy&operator=(constCDeepCopy&r);//赋值运算符函数

voidwriteToFile(char});

//main,cpp

Sinclude^CDeepCopy.h"

CDeepCopy::一CDeepCopy{delete[]P;}

CDeepCopy::CDeepCopy(intk){n=k;p=newintfn];}//构造函数实现

CDeepCopy&CDeepCopy::Operator=(constCDeepCopy&r)〃赋值运算

符函数实现

//

ff*T**T**T**T**T**T*

〃***********666***********

intmain

CDeepCopya(2),d(3);

a.p[O]=l;d.pfO]=666;〃对象a,d数组元素的赋值

CDeepCopyb(3);〃调用赋值运算符函数

a.p[O]=88;b=a;

cout«b.pfO];〃显示内层局部对象的数组元素

cout«d.pLOJ;〃显示d数组元素a.p[0]的值

coutvv“dfadeaway;\n";

cout«a.pfO];//显示a数组元素a.p[O]的值

,,,,

writeToFile();

return0;

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

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

一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及

总个数,同时允许退货,请按照以下的操作,把类补充完整。

⑴定义类TCFruit的私有静态数据成员float型变量AllWeight和int型

变量AHN0,请在注释1后添加适当的语句。

(2)完成类TCFruit的带一个float型变量w的构造函数,并把这个w加

到AllWeight中,并且AllNo自加。请在注释2后添加适当的语句。

⑶在析构函数中,在AHWeight中减去weight,然后AllNo自减,请

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

(4)完成静态成员变量的初始化为0,请在注释4后添加适当的语句。

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

他的程序代码。

试题程序:

#include(iostream.h>

classTCFruit

private:

floatWeight;

*1*

*7**7**7**7*I*1**7**7**7*

staticintAHNo;

public:

TCFruit(floatw)

/

//年"字平字**2********

AllWeight+=w:

AllNo++:

〜TCFruit

/9•!<*1**1*4,

/t^T**^*^T^L*j**T**T**^*

AllWeight-=Weight:

)

voiddisplay

(

cout«',SellaFruitwithn«Weight«,'k9,'«

endl;

coutw''Allsellnumber:n«AllNo«endl;

cout«nAllsellweight:,,«AllWeight«"k9,'«

endl«endl;

}

};

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

floatTCFruit::AIIWeight=O.0;

intmain

(

TCFruitFruitl(l.2);

Fruitl.display;

TCFruitFruit2(2.3);

Fruit2.display;

returnO;

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

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

test37_3.cpp,其中定义了类Letter和Number以及Grid,其中Grid类由

Letter类和Number类public派生,但三个类的定义并不完整。请按要

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

⑴添加类Letter的带一个参数c的构造函数,c是char型的数据,默认

值为'A]该函数把参数c的值赋给类的保护成员ch,请在注释“//**1**”

之后添加适当的语句。

⑵添加类Number的带一个参数n的构造函数,n是int型的数据,默

认值为0.该函数把参数n的值赋给类的保护成员num,请在注释

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

⑶添加派生类Grid构造函数的定义,传入的参数为char型的c和血型

的n,并将其分别赋值给基类的ch和num,请在注释“〃**3***之后添加

适当的语句。

⑷完成派生类Grid的友元函数—“<<”运算符重载的定义,使其以

格式“[g.ch,g.numF输出,请在注释“〃**4***之后添加适当的语句,

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

#include<iostream,h>

classLetter

(

protected:

charch;

public:

H**]**

I;

classNumber

protected:

intnum;

public:

H**2**

);

classGrid:publicLetter,publicNumber

(

public:

H**3**

friendostream&operator<<(ostream&o,Grid&g);

};

H**4**

(

o<<<<g.ch<<M,M<<g.num<<

returno;

)

intmain()

(

Gridg('C;3);

cout<<"Gridreference:"<<g<<end1;

return0;

)

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

test27_3.cpp,其中定义了类ARRAY,但类的定义并不完整。请按要求

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

⑴完成类ARRAY的带一个参数的构造函数,参数i为int型,如果i不

是正数则输出错误信息并退出,否则申请int型的大小为i的空间,然

后把i赋值给类的数据成员num。请在注释"//**”"之后添加适当的语

句。

⑵完成类ARRAY的拷贝初始化构造函数,注意解决重复删除的问题,

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

⑶完成类ARRAY的重载的运算符函数口,参数i为血型,如果i超界

则输出错误信息并退出,否则把下标为i的元素返回,请在注释“〃**3**”

之后添加适当的语句。

(4)完成类ARRAY的重载的运算符函数二,同样需要注意解决重复删除

的问题,不能只是简单的赋值,请在注释“〃**4***之后添加适当的语句。

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

源程序文件test27_3.cpp清单如下;

#include<iostream.h>

#include<stdlib.h>

classARRAY

(

private:

int*p,num;

public:

ARRAY(){p=newint[10],num=10;}

ARRAY(inti)

H(**]**

(

cout<(”错误!数组长度应为正。\n”;

exit(O);

)

p=newint[i];

num=i;

)

ARRAY(constARRAY&a);

int&operator[](inti);

〜ARRAY。{deletep:}

ARRAY&operator=(constARRAY&a);

friendARRAYoperator+(ARRAY&a,ARRAY&b);

friendostream&operator<<(ostream&os,ARRAY&a);

};

ARRAY::ARRAY(constARRAY&a)

H**2**

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

pfi]=a.p[il;

)

int&ARRAY::operatorf](inti)

(

H**3**

(-

cout<("越界访问!”;

exit(0);

)

returnp[ij;

)

ARRAY&ARRAY::operator=(constARRAY&a)

(

num=a.num;

p=newint[num];

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

p[i]=a.p[i];

〃**4**

)

ARRAYoperator+(ARRAY&a,ARRAY&b)

(

if(a.num!=b.hum)

(

cout<<“数组长度K相同!”<<endl;

exit(0);

}

ARRAYt(a.num);

for(inti=0;i<a.num;i++)

t.pn]=a.p[i]+b.p[i];

returnt;

1

ostream&operator«(ostream&os,ARRAY&a)

(

inti=0;

for(;i<a.num;i++)

cout<<a,p[i]<<

if(!((i+l)%10))cout<<endl;

returnos;

}

voidmain()

(

ARRAYa(3);

a[O]=a[l]=a[2]=3;

cout<<'a'<<a<<end1;

ARRAYb(a);

cout<<'b'<<b<<endl;

ARRAYc(2);

c=a+b+b;

cout<<'c'<<c<<end1;

c=((b=(a+b))+c);

cout<<'a1<<a<<'b*<<b<<*c'<<c<<endl;

参考答案

l.B

2.D解析:理解sizeof的用法,它可以运算出各种数据类型所占内存空

间的多少。注意:选项C)中是指针p所指向的内存地址中内容是200

注意:在用完申请后的内存应立刻释放。

3.B解析:类在创建对象时调用构造函数,在撤销对象时调用析构函数,

而在定义类指针时则不调用构造函数和析构函数。sampietemp[2]定义了

一个2个元素的对象数组,因此调用两次析构函数,打印2个*。

4.D解析:本题考查数学表达式的掌握,首先应转换为弧度,然后作为

cos函数的参数,求绝对值,最后是开方函数。考生需要掌握的是常用

的数学函数。

5.B解析:将变量m的地址赋给指针po

6.B

7.B

8.B解析:软件工程鼓励研制和采用各种先进的软件开发方法、工具和

环境。工具和环境的使用又进一步提高了软件的开发效率、维护效率

和软件质量。

9.A在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶

段和数据库系统阶段。其中数据独立性最高的阶段是数据库系统这一

阶段。数据库系统阶段用数据模型来表示复杂的数据,有较高的数据

独立性。数据库系统为用户提供了方便的用户接口,用户既可使用查

询语言或终端命令操作数据库,也可以用程序方式来操作。数据库管

理系统提供了数据控制功能。

lO.DDo【解析】本题考查C++语言中操作符重载的概念。运算符重

载的关键字是operator。运算符重载的规则是重载时不能改变运算符的

操作数个数,不能改变运算符的优先级,不能改变运算符的结合性,

不能改变对预定义类型数据的操作方式。

11.D解析•:函数模板的重载是靠模板参数的数量不同来区分的,因为

函数模板是抽象的,有待于进一步实例化,所以靠参数类型无法区别

调用哪个函数模板。

12.A

Ao【解析】在本题中,子函数fun(char*s)的功能是如果*s的ASCII

值是偶数,则输出*s,主函数中当实参的值为good时,9的ASCH值

是103,字母o的ASCII值是111,字母d的ASCII值是100,只有字

母d的ASCII值是偶数,所以输出字母d。

13.A解析:本题考查的是字符数组的初始化。选项B)中用3个元素初

始化大小为2的数组,越界了;选项C)中应该是2行3列的数组,题中

使用3行2列初始化;选项D)中数组合后应用方括号。

14.D解析:运算符重载为成员函数的形式为:函数类型。perator运算符

(形参表){函数体;};运算符重载为友元函数的形式为:friend函数类型

operator运算符(形参表){函数体;)。一般来讲,单目运算符最好重载为成

员函数,双目运算符最好重载为友元函数。=、[]、0、->以及所有的类

型转换运算符只能作为成员函数重载。

15.D

Do【解析】x-后缀表示先用x的值再令x减1,-x前缀表示先将x

减1,再执行程序,则输出(X-)继续下一次循环,输出“8,”,此时x

自减值变为7,执行X--,x=6,x%3=0,后面语句不执行,执行语句

“printf(”%d,",-x);”,输出“5”,继续for循环中的x・・,得到x=5,

输出“5”;判断x%3为断,输出“4”,执行两次X—后,x=2,执行

“{printf("%d”,X-);cotinue;}”后,输出“2”;然后执行两次x—后,

x=0,不符合“x>0”,循环结束。

16.C解析:本题考核模板函数的使用。在说明一个函数模板后,当编译

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

配函数模板中对象的形参,然后生成一个重载函数。由此可知模板函数

的真正代码是在函数调用时产生的。

17.A

18.B

解析:本题考查的是输入输出函数的使用,gets和getchar函数用于从

标准输入设备终端读八字符串和字符,并非从磁盘文件读入,fputs用

于把字符串输出到文件,fwrite用于以二进制形式输出数据到文件,故

选项B)描述错误。

19.A解析:类中默认的类型是私有类型,除非特别指定为公有或保护类

型。同时,并没有强制要求成员函数和数据成员的排列顺序,如果类的

成员函数在类定义体内部定义,则为内联函数,一般类的成员函数都在

类定义体的外部实现。

20.C数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。

\u3000\u3000数据操作语言(DML),例如:INSERT(插入)、UPDATE

(修改)、DELETE(删除)语句。

\u3000\u3000数据查询语言(DQL),例如:SELECT语句。

\u3000\u3000数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、

ROLLBACK等语句。

21.C解析:数据库系统具有以下几个特点:数据的集成性、数据的高共

享性与低冗余性、数据的独立性、数据统一管理与控制。

22.A

Ao【解析】枚举类型定义了一些整型符号常量的集合,使用枚举类型

时应该注意以下几点:枚举类型的第一个常量默认值是0;枚举类型常

量的值允许彼此相同;虽然枚举类型常量是整数类型,但是不允许使

用整数直接赋值给枚举类型变量,也不允许与整数进行运算,只可以

与整数进行比较。

23.C

24.一对多或I:N一对多或I:N,

25.n/2n/2解析:性表的任何位置插入一个元素的概率相等,即概率为

P=l/(n+l),则插入一个元素时所需移动元素的平均次数为E=l/(n+l)

(n-i+1)=n/2o

26.this.data=data;

27.##解析:“铲'是预处理命令•的开始标记符。

28.1Opumpkin(s)1Opumpkin(s)解析:在主函数中pumpkinpl[10];定义

了一个有10个元素的对象数组,所以调用了10次构造函数,静态数据

成员court累加了10次,pumpkin::total_count();显式调用类成员函数,

直接调用静态成员函数:total_count(),打印pumpkin(s)o

29.friendvoidA();friendvoidA();解析:C++中类的友元函数在声明

时应在该函数前面加上关键字friend,同样如果要声明一个类为另一个

类的友元类也要在前面类名前加上friendo

30.iostream.hiostream.h解析:本头文件和重要,包含了基本输入输出所

需要的库函数。

31.自顶而下自顶而下

32.ABBAABBA解析此题考查的是类的构造与析构。建立类的对象时,

构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基

类被继承时声明的顺序(自左向右)・>执行成员对象的构造函数,调用顺

序按照各个成员对象在类中声明的顺序->执行自身的构造函数。析构

顺序与之相反。此题中,B类没有基类。但是有一个A类的成员限所

以构造B类对象时,先构造成员a再构造自身。因此,构造时输出的结

果是AB,析构与构造顺序相反会输出BA0所以程序最终输出结果是

ABBA。

33.传地址传地址解析:本题考查的是传值调用和传址调用的区别——

传值调用只是进行值的简单复制,返回之后不会改变原来的值;而传址

调用是把参数的地址传入,会改变原来的值。

34.Pelk)Pell。解析:注意,两个字符串都没有名字,属字符串常量,在

内容中是同一份内容。因此,对strl进行重新赋值,仅仅替换了该字符

数组的第一个字符。两个指针指向同一个字符串,因此输出为Pell。。

35.顺序存储(或顺序方式存储)顺序存储(或顺序方式存储)解析:二分法

查找对表的要求是有序的顺序表,即第一要求是数据元素有序,第二要

求是按顺序方式存储。

36.⑴应改为“TCobjl(l);

(2)应改为"ObjLSetNumber(lO);

⑶应改为“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为类,并不是对象,

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

uobj2.SetNumber(lOO);

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

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

,,

\n(3)应改为巾]>=a&&str[i]<=2)o

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

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

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

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

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

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

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

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

38.(1)应改为"assert(sizeof(sl)==4);”。

\n(2)应改为"assert(sizeof(s2)=lO);”。

\n(3)应改为"assert(sizeof(s3)—1);”。

\n【解析】assert函数如果为假,则会产生一个中断异常。所以要让它正

常执行输出结果,那么assert函数只有为真,才不会产生中断异常。

€4assert(sizeof(sl)==3);”语句中“sizeof(sl)==3”为假,这会使程序产生异

常,不能正常执行。因为strl的值为abc,但是它还有一个尾符,它的

长度应该是4,而不是3,所以在第1处修改为“assert(sizeof(sl)==4)

str2[10]说明,slr2的空间为10,在第2处修改为“assert(sizeof(s2)=10):°

charslr3=23;语句说明23是字符,所占存储空间为1,所以修改为

t€assert(sizeof(s3)==I);

39.(1)应改为“TC::TC”。

⑵应改为“voidTC::display"o

(3)应改为“TC::〜TC”。

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

和作用域运算符作用域运算符用采表示某个成员属于哪个

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

为“TC::TC”,默认构造函数没有参数。由第2处“TC::display”后

的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错

误问题,display函数返回值为void,因此第2处的语句应改为

uvoidTC::display”。由第3处的语句“TC::TC”可知,显然这里是

在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名

相同,并在前面加“〜”字符,用采与构造函数加以区别,因此第3处

的语句应改为“TC::〜TC”。

40.(l)“voidmain”。

(2)“intm=0144;”。

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

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

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

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

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

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

对应十六进制的25,因此2和3应分另IJ改成“intm=0144;”,

“intn=0x25;”或“intn=0x25;”。

41.⑴应改为"usingnamespacestd;

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

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

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

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

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

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

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

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

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

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

(2)应改为"while(str[i])”。

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

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

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

个数,终止标志字符广,所以第1处改为“cin.getline(str,

120,?);工第2处的“while(str)”语句应该是判断字符串str中的每一

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

为小写,若为小写,则转换。所以应该修改为“while®巾]广。第3处的

“if(st明>=a)”语句是判断字符str[i]是否为小写字符,而现有的语句只

是判断字符是否大于a,但是小写字符应该是a到2,所以修改为

44if(str[i]>=a&&str[i]>=z),,o

43.(1)应改为"usingnamespacestd;

⑵应改为“outl.open("l.txt",ios::binaryIios::叩p);"。

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

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

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

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

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

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

4€outl.open("l.txt",ios::binaryIios::叩p);第3个标识应

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

温馨提示

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

评论

0/150

提交评论