2022年贵州省毕节地区全国计算机等级考试C++语言程序设计测试卷(含答案)_第1页
2022年贵州省毕节地区全国计算机等级考试C++语言程序设计测试卷(含答案)_第2页
2022年贵州省毕节地区全国计算机等级考试C++语言程序设计测试卷(含答案)_第3页
2022年贵州省毕节地区全国计算机等级考试C++语言程序设计测试卷(含答案)_第4页
2022年贵州省毕节地区全国计算机等级考试C++语言程序设计测试卷(含答案)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

2022年贵州省毕节地区全国计算机等级考试C++语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、1.选择题(10题)1.c++语言类体系中,不能被派生类继承的有()。

A.转换函数B.构造函数C.虚函数D.静态成员函数

2.流程控制语句的基本控制结构有三种,不属于这一种结构的是()。

A.顺序结构B.选择结构C.循环结构D.计算结构

3.C++流中重载了运算符<<,它是一个()。

A.用于输出操作的成员函数B.用于输入操作的成员函数C.用于输入操作的非成员函数D.用于输出操作的非成员函数

4.对表达式for(表达式1;;表达式3)可理解为

A.for(表达式1;0;表达式3)

B.for(表达式1;1;表达式3)

C.for(表达式1;表达式3;)

D.for(;;表达式3)

5.类的成员函数中,只能用于检测输入操作的函数是______。

A.goodB.failC.badD.eof

6.数据独立性是数据库技术的重要特点之一。所谓数据独立性是指

A.数据与程序独立存放

B.不同的数据被存放在不同的文件中

C.不同的数据只能被对应的应用程序所使用

D.以上3种说法都不对

7.在C++语言中,形参的缺省存储类型是()。

A.autoB.registerC.staticD.extern

8.下列说法中错误的是()。

A.公有继承时基类中的public成员在派生类中仍是public的

B.公有继承时基类中的private成员在派生类中仍是private的

C.私有继承时基类中的public成员在派生类中是private的

D.保护继承时基类中的public成员在派生类中是protected的

9.下列运算符中,在C++语言中不能重载的是

A.*B.>=C.∷D./

10.设x是值为10的int型变量,则在计算表达式x+=x-=x-x后,x的值为______。

A.1B.20C.40D.30

二、单选题(13题)11.C++中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系统的运行,另一种是通过()派生出新的类。

A.复用B.继承C.封装D.引用

12.在C++中,合法的字符常量是______。

A.‘084’B.‘\x43’C.‘ah’D.“0”

13.判断char型变量c是否为小写字母的正确表达式是()。

A.'a'<=c<='z'

B.(c>=A)&&(c<=z=

C.('a'>=c)||('z'<=c)

D.(c>='a')&&(c<='z')

14.有如下程序:#include<iostream>usingnamespacestd;classBase{public:voidfunl{cout<<”Base\n”;}virtualvoidfun2{eout<<”Base\n”;}};classDerived:publicBase{public:voidfunl{eout<<”Derived、n”;}voidfura{eout<.<”Derived\n”;}};voidf(Base&B.}b.funl;b.ftm2;}intmain{Derivedobj;f(obj);return0;}执行这个程序的输出结果是()。A.BaseBaseB.BaseDerivedC.DerivedBaseD.DerivedDerived

15.下面对静态数据成员的描述中,正确的是()。

A.静态数据成员可以在类体内进行初始化

B.静态数据成员不可以被类的对象调用

C.静态数据成员不能受private控制符的作用

D.静态数据成员可以直接用类名调用

16.有如下程序:#jnClude<iostream>usingnamespaCestd;ClassPart{publiC:Part(intx=0):val(X){Cout<<val;}~Part{Cout<<val;}private:intval;t};ClassWhole{publiC:Whole(intx,intY,intz=0):p2(x),pl(y),val(z){Cout<<val;}~Whole{eout<<val;}private:Partpl,p2;intval;};intmain{Wholeobj(1,2,3);return0;}执行这个程序的输出结果是()。A.123321B.213312C.213D.123123

17.若x和y是程序中的两个整型变量,则下列if语句中正确的是()。

A.if(x==O)y=1;elsey=2;

B.if(x==0)theny=1elsey=2

C.if(x==O)y=1elsey=2;

D.ifx==0y=1elsey=2;

18.以下不是结构化程序设计方法的技术是()。

A.自顶向下,逐步求精B.自底向上,逐步求精C.从整体到局部D.结构清晰,层次分明

19.判断char型变量c是否为小写字母的正确表达式是A.‘a’<=c<=‘z’

B.(c>=A)&&(c<=z)

C.(‘a’>=c)||(‘2’<=c)

D.(c>=‘a’)&&(c<=‘z’)

20.对于长度为n的线性表,在最坏情况下,下列各种排序法所对应的比较次数中正确韵是()。

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

21.以下程序的正确运行结果是()。#include<iostream.h>intfun(int);voidmain(){inta=2,i;for(i=0;i<3;i++)cout<<fun(a)<<end1;cout<<end1;}intfun(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}

A.4,5,6B.6,7,9C.7,8,9D.7,7,7

22.有如下函数模板定义:template

T1FUN(T2n){returnn*5,0;}若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为()。

A.FUN(9)B.FUN<9>C.FUN(9)D.FUN<9>(double)

23.有以下结构体说明和变量的定义,且指针P指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是()。structnode{chardata;structnode*next;}a,b,*p=&a,*q=&b;A.a.next=q;B.P.next=&b;C.p->next=&b;D.(*p).next=q;

三、2.填空题(12题)24.在TestClass类的定义中,对赋值运算符=进行重载。请将画线处缺失的部分补充完整。______TestClass::operator=(constTestClass&rhs)

{

if(this==&rhs)return*this;

value=rhs.value;

return*this;

}

25.数据库系统中实现各种数据管理功能的核心软件是______。

26.下列程序中需要清理动态分配的数组,划线处应有的语句是_______。

#include<iostream.h>

classperson

{

intage,tall;

public:

person(){age=0;tall=40;cout<<"Ababyisborn."<<endl;}

person(inti){age=i;tall=40;cout<<"Aoldperson."<<endl;}

person(inti,intj){age=i;tall=j;cout<<"aoldpersonwithtall."<<endl;)

~person(){cout<<"persondead."<<endl;}

voidshow()

{

cout<<"age="<<age<<",tall="<<tall<<endl;

}

};

voidmain()

{

person*ptr;

ptr=newperson[3];

ptr[0]=person();

ptr[1]=person(18);

ptr[2]=person(20,120);

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

ptr[i].show();

______

}

27.【】是C++语言程序的入口。

28.若已定义,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。

fun(inta[])

{

inti,

for(i=1;i<=10;i++)【】=i;

for(i=0;i<5;i++)【】=a[i];

}

29.有如下的程序:

#include<iostream>

#include<fstream>

usingnamespacestd;

intmain()

{

ofstreamoutf("D:\\temp.txt",ios_base::trunc);

outf<<"WorldWideWeb";

outf.close();

ifstreaminf("D:\\temp.txt");

chars[20];

inf>>s;

inf.close();

cout<<s;

return0;

}

执行后的输出结果是【】。

30.多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但[]运算符只能作为类的______函数重载。

31.以下程序的输出结果是【】。

#include<iostream.h>

voidmain()

{

charcha[3][5]={"AAAA","BBBB","CC"];

cout<<cha[1]<<end1;

}

32.一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【】。

33.算法的基本特征是可行性、确定性、【】和拥有足够的情报。

34.当用数组元素作函数参数时,这属于【】传递。

35.若把类B定义为类A的友元类,则应在类A中加入定义语句【】。

四、程序改错题(10题)36.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。

程序异常,输出信息为

error

O

ERROR

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

试题程序:

#include<iostream.h)

intmain

{

try

{

throw("error");

}

//********error********

catch(chars)

{

cout<<s<<endl;

}

try

{

throw((int)0);

}

//********error********

catch

{

cout<<i<<endl;

}

try

{

throw(O);

throw("error");

}

//********error********

catch

{

cout<<"ERROR"<<endl;

}

return0;

}

37.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

试题程序:

#include<iostream.h>

voidmain

{

inti=0;

charstr[120];

cout<<"Enterastringendwith?."<<endl;

//********error********

cin.getline(str,120);

//********error********

while(str)

{

//********error********

if(str[i])=a)

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

i++;

}

cout<<str<<endl;

return;

}

38.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:

9,8,7,6,5

注意:错误的语句在/********error********/的下面,修改该语句即可。其他的语句不能修改。

试题程序:

#include(iostream.h>

classTC

{

/********error********/

TC(inti)

{

m_i=i;

}

voidprint

{

cout<<--m_i<<,;

}

public:

intm_i;

};

intmain

{

/********error********/

inti;

TC04(10);

while(i>5)

{

/********errOr********/

i++:

04.print;

}

cout<<endl;

return0;

}

39.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在//******error******的下面,修改该语句即可。试题程序:#include<iostream.h>//******error******voidmain{//******error******intm=0142://******error******intn=0X27:intq=32;cout<<m<<endl;cout<<n<<endl;cout<<q<<endl;return;}

40.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:

sizeof(S1)=5

sizeof(s2)=10

sizeof(s3)=1

注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。

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

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

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

试题程序:

#include<iostream.h>

#include<assert.h>

voidmain()

{

char*s1="abc":

//********error********

assert(sizeof(s1)==3):

cout<<"sizeof(s1)=5"<<endl;

chars2[10]="ab":

//********error********

assert(sizeof(s2)==2);

cout<<"sizeof(s2)=10"<<endl;

chars3=23:

//********error********

assert(sizeof(s3)==4);

cout<<"sizeof(s3)=1"<<endl;

return;

}

41.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#include<iostream>#include<fstream>//********error********usingstd;voidWriteFile(char*s){ofstreamout1;//********error********out1.open("1.txt",binary|app);for(inti=0;s[i]!=0;i++){//********error********out1.puts(s[i]);}out1.close;}voidClearFile{ofstreamout1;out1.open("1.txt");out1.close;}intmain{chars[1024];ClearFile;cout<<"pleaseinputastrin9:"<<endl;cin.getline(s,1024);WriteFile(s);return0;}42.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果正确。程序输出:88注意:错误的语句在/********error********/的下面。修改该语句即可,其他的语句不能修改。试题程序:#include(iostream.h>classCO{public:/********error********/staticintn=0:CO{n++:}~CO{n--:}}:/********error********/intCO::n;voidmain{COobj;COobj2[7];CO*C=NULL:c=&obj:/********error********/eout<<C.n<<endl;cout<<C0::n<<endl;}

43.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为

Constructor,i=0,

Destructor

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

试题程序:

#include(iostream.h)

classTC

{

inti;

public:

TC;

voiddisplay;

~TC;

};

//******error******

TC:TC

{

cout<<"Constructor"<<",";

i=0;

)

//******error******

TC:display

{

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

}

//******error******

TC:TC

{

COUI<<"Destructor"<<endl:

}

voidmain

{

TCa;

a.display;

}

44.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。程序异常,输出信息为errorOERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。试题程序:#include<iostream.h)intmain{try{throw("error");}//********error********catch(chars){cout<<s<<endl;}try{throw((int)0);}//********error********catch{cout<<i<<endl;}try{throw(O);throw("error");}//********error********catch{cout<<"ERROR"<<endl;}return0;}45.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:number=1number=10number=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{//********error********TCobjl;objl.Print;TCobj2(3);//********error********objl.number=10;//********error*‰******TC.SetNumber(100);objl.Print;obj2.Print;}五、综合应用题(2题)46.请使用VC6或使用【答题】菜单打开考生文件夹proj3下的工程proj3,其中声明的CDeepCopy是一个用于表示矩阵的类。请编写这个类的赋值运算符成员函数0perator=,以实现深层复制。要求:补充编制的内容写在“//************333************”与“//****************666*************”之间。不得修改程序的其他部分。注意:程序最后将结果输出到文件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#include”CDeepCopy.h”CDeepCopy::一CDeepCopy{delete[]P;}CDeepCopy::CDeepCopy(intk){n=k;p=newint[n];}//构造函数实现CDeepCopy&CDeepCopy::0perator=(constCDeepCopy&r)//赋值运算符函数实现{//***********333*********//***********666***********}intmain{CDeepCopya(2),d(3);a.p[O]=1;d.p[O]=666;//对象a,d数组元素的赋值{CDeepCopyb(3);//调用赋值运算符函数a.p[O]=88;b=a;cout<<b.p[O];//显示内层局部对象的数组元素}cout<<d.p[O];//显示d数组元素a.p[O]的值cout<<”dfadeaway;\n”;cout<<a.p[O];//显示a数组元素a.p[O]的值writeToFile(””);return0;}

47.(1)应添加“BA(intm){a=m;}”。

(2)应添加“PAl(intm,intn):BA(n){b=m;}”。

(3)应添力Ⅱ“PA2(intm,intn,intk):PAl(n,k){C=m;)”。

(4)应添加“cout<<geta<<""<<getb<<""<<C<<endl;”。

【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA构造函数的名称为BA,在BA中通过参数m完成对成员变量a的赋值,因此构造函数的名称为BA(intm),在函数内部对成员a赋值,故第1处的语句应添加“BA(intm){a=m;)”。根据第2处的要求,构造函数的形式为“PAl(intm,intn)”,m赋值给PA1类成员b,将n作为基类BA构造函数的参数值传入,故第2处应添加“PA1(intm,intn):BA(n){b=m;}”。根据第3处的要求,函数形式为PA2(intm,intn,intk),在构造函数中将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参数m和n,因此第3处应添加“PA2(intm,intn,intk):PA1(n,k){C=m;}”。根据第4处的要求,PA2类公有派生于PA1,而PA1公有派生于BA,因此在PA2类中可以调用基类的geta和getb来获得基类私有成员a和b,再输出PA2的私有成员C即满足要求,因此第4处应添加“cout<<geta<<""<<getb<<""<<C<<endl;”。

六、3.综合应用题(2题)48.使用VC6打开考生文件夹下的工程test31_3。此工程包含一个test31_3.cpp,其中定义了可以动态分配的字符串类,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)定义类tstring的私有数据成员length和p,它们分别是血型的数据和字符型的指针,其中length表示一个字符串的长度。请在注释“//**1**”之后添加适当的语句。

(2)完成类tstring的构造函数,使length等于字符串m的长度,并申请由指针p指向的length长的字符型空间,将m所指的字符串复制到该空间。请在注释“//**2**”之后添加适当的语句。

(3)完成类tstring的成员函数strcopy(tstringn)的定义,该函数将对象n的值(包括字符串长度和字符串本身)复制给调用该函数的对象(对象n的字符串长度任意)。请在注释“//**3**”之后添加适当的语句。

(4)完成类tstring的友元函数strlink(tstringm,tstringn)的定义,该函数将可动态分配的字符串类对象m和n的字符串成员连接在一起(对象m和n的字符串长度任意),并返回该串。请在注释“//**4**”之后添加适当的语句。

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

程序输出结果如下:

hellotheworld!

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

#include<iostream.h>

#include<conio.h>

#include<string.h>

clasststring

{

public:

//**1**

tstring(char*m)

{

//**2**

strcpy(p,m);

}

voidstrcopy(tstringn);

friendchar*strlink(tstringm,tstringn);

};

voidtstring::strcopy(tstringn)

{

//**3**

char*q;

q=newchar[length];

strcpy(q,tstring::p);

q=strcat(tstring::p,n.p);

tstring::p=q;

tstring::length=strlen(tstring::p);

}

char*strlink(tstringm,tstringn)

{

intlength=strlen(m.p)+strlen(n.p);

char*p;

//**4**

strcpy(p,m.p);

p=strcat(p,n.p);

returnp;

}

voidmain()

{

tstringa("hello");

tstringb("theworld");

tstringc("!");

a.strcopy(b);

cout<<strlink(a,c)<<end1;

}

49.使用VC6打开考生文件夹下的工程test23_3,此工程包含一个源程序文件test23_3.cpp,其中定义了类X和它的友元类Y,但它们的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)将类X的静态数据成员y初始化为1。请在注释“//**1**”之后添加适当的语句。

(2)完成类Y的构造函数Y(inti,intj)的定义,将参数i赋值给类Y的数据成员,X的对象a中的数据成员x,并且把参数j赋值给类X的数据成员y,请在注释“//**2**”之后添加适当的语句。

(3)完成类Y的成员函数voidDisplay()的定义,将Y的数据成员,X的对象a中的数据成员x和类X的数据成员y按照“x=_,y=_”的形式显示出来(“_”代表一个数字),请在注释“//**3**”之后添加适当的语句。

输出结果如下:

x=5,y=l

x=6,y=9

x=5,y=9

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

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

include<iostream.h>

classX

{

friendclassY;

public:

voidSet(inti){x=i;}

voidDisplay()

{

cout<<"x="<<x<<",";

cout<<"y="<<y<<endl;

}

private:

intx;

staticinty;

};

classY

{

public:

Y(inti,intj)

voidDisplay();

private:

Xa;

};

//**1**

Y::Y(inti,intj)

{

//**2**

}

voidY::Display()

{

//**3**

}

voidmain()

{

Xb;

b.Set(5);

b.Display();

Yc(6,9);

c.Display();

b.Display();

}

参考答案

1.B解析:派生类对象的数据结构是由基类中说明的数据成员和派生类中说明的数据成员共同构成,所以不能继承基类的构造函数,必须重新定义。

2.D

3.D解析:本题考核运算符的重载。C++流中重载了>>和<<,其中>>用于有格式输入,<<用于有格式输出,且都重载为非成员函数。

4.B解析:本题中,若要保证for表达式能正常进行,首先要保证第2个表达式的条件判断值应该为真,从而保证循环进行。

5.D

6.D解析:数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。所以选项A、B、C所描述的都不是数据独立性概念。

7.A

8.B解析:公用继承时基类中的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。私有继承时,基类的公有成员和保护成员在派生类中成了私有成员,其私有成员仍为基类私有。受保护的继承时,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员认为基类私有。

9.C解析:不能被重载的运算符还包括:“.”,“.*”,“->*”和“?:”。

10.B

11.B解析:继承的基本概念。

12.B

13.D字符型数据在计算机内部是以ASCII码存储的,英文大写字母和小写字母在ASCII码表中都是连续的。大写字母A~z是从65~90,小写字母a~z是从97~122。所以只要变量c大于等于a并月小于等于z就能保证其为小写字母。

14.B在某基类中声明为virtual并在一个或多个派生类中被重新定义的成员函数,本题中定义r一个派生类对象0bi,执行f函数后,将派生类对象0bj转化为基类对象,由于fun1不是虚函数,所以输出基类的fun1;而fun2是虚函数,所以输出派生类的fun2,所以本题答案为8。

15.D解析:静态数据成员必须在类体外初始化,它是类的所有对象的共有成员,需要使用类名调用,静态数据成员的初始化与权限控制无关。

16.B本题考查带参数的构造函数。本题中定义了一个对象obj,那么执行其构造函数,初始化p1,p2的顺序是由声明这两个成员的顺序决定的,而不是由参数化列表顺序决定,所以本题中,会先执行p1,输出2,然后执行p2输出1,然后输出3,最后一次输出312。所以本题答案为8。

17.AA。【解析】if…else语句的格式“if(<条件>)<语句1>else<语句2>”注意语句结束要以分号结尾,对照题中选项可知A正确。

18.BB.【解析】结构化程序设计的主要原则可以概括为自顶向下、逐步求精、模块化、限制使用GOTO语句。

19.D解析:字符型数据在计算机内部是以ASCII码存储的,英文大写字母和小写字母在ASCII码表中都是连续的。大写字母A~Z是从65~90,小写字母a~z是从97—122。所以只要变量c大于等于a并且等于小于2就能保证其为小写字母。

20.D

21.C

22.CC。【解析】函数返回类型是double型,则T1为double型,T2为int型才符合函数模板的定义。

23.B本题考查结构体指针变量的赋值方法,要把结点b连接到结点;l的后面,必须把b的地址给a的next指针。故8正确。

24.TestClass&TestClass&解析:如果要重载一个类的运算符=,通常需要定义自己特有的拷贝构造函数。在类体中可以增加:(const&operatorlestClass&rhs);然后在TestClass的类体外给出它的完整定义:

TestClass&TestClass::operator=(constTestClass&rhs)

{…}

所以在TestClass类的定义中缺少了TestClass&语句。

25.数据库管理系统数据库管理系统解析:数据库管理系统是数据库的管理机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。

26.delete[]ptr;delete[]ptr;解析:本题考察对象数组的销毁方法,注意删除对象数组时,[]内不要指定大小。

27.main()函数main()函数解析:main()是C++语言的入口函数。注意:main()函数可以放在程序的任何位置

28.a[i-1]a[9-i]

29.WorldWorld解析:提取运算符>>在读取数据时遇到空格、Tab符号以及回车符时将结束此次相关操作。

30.成员成员解析:C++中规定[]作为下标运算符,不能被重载为友元函数,只能被重载为类的成员函数。

31.BBBB

32.可重用性可重用性解析:本题考查了继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的叫重用性。

33.有穷性有穷性解析:算法是指解题方案的准确而完整的描述。它有4个基本特征,分别是可行性、确定性、有穷性和拥有足够的情报。

34.数值数值解析:当用数组元素作函数参数时是值传递方式。

35.friendclassB;friendclassB;解析:若把类B定义为类A的友元类,则应在类A中加入的定义语句为friendclassB;。36.(1)应改为“catch(char*s)”。(2)应改为“cateh(inti)”。

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

【解析】本题中第1个标识前的异常抛出语句为“throw("error");”,其中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语句修改为“catch(char*S)”。第2个标识前的异常抛出语句为“throw((int)0);”,其中的类型为int。对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch(…)”。

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

\n(2)应改为“while(str[i])”。

\n(3)应改为“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[i]是否为小写字符,而现有的语句只是判断字符是否大于a,但是小写字符应该是a到2,所以修改为“if(str[i]>=a&&str[i]>=z)”。

38.(1)应添加“public:”。

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

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

\n【解析】本题主要考查的是成员的访问属性。成员的访问属性有公有、保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类的对象被访问。故应在构造函数前添加“public:”,否则该类无法被实例化。变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造参数,题目已要求使用后者。本题要求输出5个数,while的循环变量i每次减1,在i>5时循环,故i初始化应为10。若循环中i每次增1,则循环永远不会退出。39.(1)“voidmain”。(2)“intm=0144;”。(3)“intn=OX25;”或“intn===0x25;”。【解析】本题主要考查了主函数定义及幂同进制之间的转换,包括十进制到八进制,十进制到十六进制。主函数定义的定义形式为“main”,函数名之后必须是一对括号,因此第1处应改为“voidmain”。cout输出默认是以十进制方式输出的,根据题目要求输出的结果可发现变量的初值不正确,十进制的100对应八进制的144,卡进制的37对应十六进制的25,因此2和3应分别改成“intm=0144;”,“intn=0×25;”或“intn=0×25;”。

40.(1)应改为“assert(sizeof(s1)==4);”。

\n(2)应改为“assert(sizeof(s2)==1O);”。

\n(3)应改为“assert(sizeof(s3)==1);”。

\n【解析】assert函数如果为假,则会产生一个中断异常。所以要让它正常执行输出结果,那么assert函数只有为真,才不会产生中断异常。“assert(sizeof(s1)==3);”语句中“sizeof(s1)==3”为假,这会使程序产生异常,不能正常执行。因为str1的值为abc,但是它还有一个尾符,它的长度应该是4,而不是3,所以在第1处修改为“assert(sizeof(s1)==4);”。str2[10]说明,str2的空间为10,在第2处修改为“assert(sizeof(s2)==10);”。charstr3=23;语句说明23是字符,所占存储空间为1,所以修改为“assert(sizeof(s3)==1);”。

41.(1)应改为“usingnamespacestd;”。(2)应改为“outl.open("1.txt",ios::binary|ios::app);”。(3)应改为“out1.put(s[i]);”。【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,对于C++中引入标准命名空间的格式,缺少namespace,所以第1处的语句修改为“usingnamespacestd;”。第2处,调用成员函数open中,输入、输出方式是在ios类中定义的,所以“out1.open("1.txt",binary|app);”语句缺少类ios,即第2处的语句修改为“out1.open("1.txt",ios::binary|ios::app);”。第3个标识应该用流成员函数put输出字符,所以第3处的语句修改为“out1.put(s[i]);”。42.(1)“staticintn=O”应改为“staticintn;”。(2)“intCO::n;”应改为“intCO::n=0;”。(3)“cout<<c.n<<endl;”应改为“cout<<c->n<<endl;”。【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1处应改为“staticintn;”,第2处要给n赋值,第3处输出时引用c的对象,应改为“cout<<c->n<<endl;”。

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

\n(2)应改为“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”。

44.(1)应改为“catch(char*s)”。(2)应改为“cateh(inti)”。(3)应改为“catch(…)”。【解析】本题中第1个标识前的异常抛出语句为“throw("error");”,其中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语句修改为“catch(char*S)”。第2个标识前的异常抛出语句为“throw((int)0);”,其中的类型为int。对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个系统函数,使程序终止运行。即第2处的语句修改为“catch(inti)”。如果在catch子句中没有指定异常信息的类型,那么就用删节号“…”表示它可以捕捉任何类型的异常信息,即修改为“catch(…)”。45.(1)应改为“TCobjl(1);”。(2)应改为“0bj1.SetNumber(10);”。(3)应改为“0bj2.SelNumber(100);”。【解析】本题第1处的“TCobjl;”语句是声明TC类的对象0bj1,根据TC类构造函数的定义TC(inti),存在整型参数,并且题目要求第一个输出结果两1,所以补全参数1,即第1处的“TCobjl(1);”。第2处处的“objl.number=10

温馨提示

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

评论

0/150

提交评论