2022年江苏省连云港市全国计算机等级考试C++语言程序设计测试卷(含答案)_第1页
2022年江苏省连云港市全国计算机等级考试C++语言程序设计测试卷(含答案)_第2页
2022年江苏省连云港市全国计算机等级考试C++语言程序设计测试卷(含答案)_第3页
2022年江苏省连云港市全国计算机等级考试C++语言程序设计测试卷(含答案)_第4页
2022年江苏省连云港市全国计算机等级考试C++语言程序设计测试卷(含答案)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

2022年江苏省连云港市全国计算机等级考试C++语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________

一、1.选择题(10题)1.下面程序的运行结果是()。#include<iostream.h>intx=5;intfan(inta){intc;c=x*a;returnc;}voidmain(){intx=3,a=4;x=x+fun(a);eout<<"x="<<x<<end1;}

A.x=15B.x=17C.x=23D.x=25

2.在进行了任何C++流的操作后,都可以用C++流的有关成员函数检测流的状态,其中只能用于检测刚进行的操作是否失败函数名是()。

A.failB.eofC.badD.good

3.关于虚函数下面说的正确的是()。

A.若在重定义虚函数时使用了virtual,则该重定义函数还是虚函数

B.虚函数不能声明为友元

C.子类必须重定义父类的虚函数

D.虚函数不能是static的

4.下列选项中不属于结构化程序设计方法的是()。

A.自顶向下B.逐步求精C.模块化D.可复用

5.下列关于模板的叙述中,错误的是______。

A.模板声明中的第一个符号总是关键字template

B.在模板声明中用<和>,括起来的部分是模板的形参表

C.类模板不能有数据成员

D.在一定条件下函数棋板的实参可以省略

6.如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是

A.一元运算符B.二元运算符C.选项A)和选项B)都可能D.重载错误

7.下列数据模型中,具有坚实理论基础的是()。

A.层次模型B.网状模型C.关系模型D.以上3个都是

8.有如下程序;#include<iostream>usingnamespacestd;classBase{public;Base(inti){x=i;}voiddispa0{cout<<x<<',';}private;intx;};classDerived;publicBase{public;Derived(inti);Base(i+10){x=i;)voiddispb(){dispa();cout<<x<<end1;}private;intx;};intmain(){Derivedb(2);b.dispb();return0;}运行的结果是()。

A.2,2B.12,2C.12,10D.10,2

9.有以下程序:#include<iostream>usingnamespacestd;intmain(){chars1[10],s2[10];char*p=s1,*q=s2;cin>>s1>>s2;while(*p!='\0')p++;while(*q!='\0')*p++=*q++;*p='\0';cout<<s1<<end1;return0;}

A.abcd0ghijB.abcd0ghij0C.abcdD.abcdghij

10.下列关于对列的叙述中正确的是()。

A.在队列中只能删除数据B.在队列中只能插入数据C.队列是先进后出的线性表D.队列是先进先出的线性表

二、单选题(13题)11.已知函数fun的原型为

intfun(int,int,int);

下列重载函数原型中错误的是A.charfun(int,int);

B.doublefun(int,int,double);

C.intfun(int,char*);

D.floatfun(int,int,int);

12.有下列程序:

#include<stdi0.h>

structst

{intx,Y,date[2]={1,10,2,20};

voidmain()

{structst*p=date;

printf("%d,",p->y);printf("%d\n",(++p)

->x);

}

程序的运行结果是()。

A.A.10,1B.20,1C.10,2D.20,2

13.NULL是指

A.0B.空格C.未知的值或无任何值D.空字符串

14.实现运行时的多态性要使用()。

A.重载函数B.析构函数C.构造函数D.虚函数

15.类MyClass的定义如下:classMyClass{public:MyClass(){}MyClass(inti){value=newint(i);}int*value;};若要对value赋值,则下面语句正确的是()。

A.MyClassmy;my.value=10;

B.MyClassmy;*my;*value=10;

C.MyClassmy;my.*value=10;

D.MyClassmy(10);

16.有如下程序:#include<iostream>usingnamespacestd;classONE{intc;public:ONE():c(0){cout<<1;}ONE(intn):c(n){cout<<2;}};classTWO{ONEone1;ONEone2;public:TWO(intm):one2(m){cout<<3;}};intmain(){TWOt(4);return0;}运行时的输出结果是_________。A.3B.23C.123D.213

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

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

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

18.要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是()。

A.fatreamB.istreamC.ostreamD.iomanip

19.假定其中的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)))

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

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

21.

22.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是_________。

A.提高耦合性降低内聚性有利于提高模块的独立性

B.降低耦合性提高内聚性有利于提高模块的独立性

C.耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D.内聚性是指模块间互相连接的紧密程度

23.多继承的构造顺序可分为如下四步:①所有非虚基类的构造函数按照它们被继承的顺序构造②所有虚基类的构造函数按照它们被继承的顺序构造③所有子对象的构造函数按照它们声明的顺序构造④派生类自己的构造函数体这四个步骤的正确顺序是()

A.④③①②B.②④③①C.②①③④D.③④①②

三、2.填空题(12题)24.若要访问指针变量q所指向的数据,应使用表达式______。

25.下列程序用于将源文件中的字母进行大小写转换,请填写while的请句。

#include<iostream.h>

#include<fstream.h>

#include<iomanip.h>

voidmain()

{

charch;

fstreamfile1,file2;

charfnl[10],fn2[10];

cout<<“输入源文件名:”;

cin>>fn1;

cout<<“输入目标文件名:”;

cin>>fn2;

{i

26.若有定义语句:inta=3,b=2,c=1;,则表达式a<b?a:b的值是【】。

27.在C++语言中,访问一个对象的成员所用的运算符是______,访问一个指针所指向的对象的成员所用的运算符是______。

28.假定用户没有给一个名为MyClas的类定义析构函数,则系统为其定义的默认析构函数形式为【】。

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

#include<iostream>

usingnamespacestd;

classA

public:A(){cout<<'A';}

};

classB:【】

public:B(){cout<<'B';}

classC:virtualpublicA

public:C(){cout<<'C';}

classD:publicB,publicC

public:D(){cout<<'D';}

};

voidmain(){Dobj;}

30.下列程序的输出结果是______。

#include<iostream.h)

template<classT>

Tmax(Tx[],intn)

{

inti;

Tmaxv=x[0];

for(i=1;i(n;i++)

if(maxvmaxv=x[i];

returnmaxv;

}

voidmain()

{

inta[]={3,2,7,6,8,9};

doubleb[]={1.2,3.4,2.5,7.3,6

31.若将一个二元运算符重载为类的成员函数,其形参个数应该是______个。

32.重载的运算符保持其原有的【】、优先级和结合性不变。

33.C++程序是从【】函数开始执行的。

34.C++语言中的多态性是在编译时通过【】和模板体现的,在运行时是通过【】体现的。

35.请按下面注释的提示,将类B的构造函数定义补充完整。

classA

{

inta;

public:

A(intaa=0)(a=aa;]

};

classB:publicA{

intb;

Ac;

public:

//用aa初始化基类A,用aa+1初始化类对象成员c

B(intaa):【】{b=aa+2}

};

四、程序改错题(10题)36.使用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;

}

37.使用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;}38.使用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;}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,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个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;}

41.使用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;

}

42.使用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;

}

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

number=1

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

{

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

TCobjl;

objl.Print;

TCobj2(3);

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

objl.number=10;

//********error*‰******

TC.SetNumber(100);

objl.Print;

obj2.Print;

}

44.使用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;}45.使用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;}五、综合应用题(2题)46.使用VC++6.0打开源程序文件3.cpp。其中类TC用于把文件输出到屏幕,然后进行文件的分割。分割的方法如下:第一个文件的大小是文件的前一半,另外一个文件的大小是剩余部分。此程序将in.txt文件中的内容输出到屏幕,并且将文件按照以上方式分割,存于文件out1.txt和out2.txt中。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)从输入文件中获得一个字符,并判断是否到文件结尾,如果到文件结尾,则退出循环。请在注释1后添加适当的语句。(2)把获得的输入文件的内容存储到bur中,并且用len记录下文件的长度。请在注释2后添加适当的语句。(3)将输入文件的后一半内容存储在第二个文件中,请在注释3后添加适当的语句。(4)使用文件流对象打开输入文件in.txt,请在注释4后添加适当的语句。注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。试题程序:#include<iostream.h>#include<fstream.h>#include<stdlib.h)classTC{public:TC(char*fileName){len=0;fstreaminfile;infile.open(fileName,ios::in);charch;//********1********while{cout<<ch;//********2********}infile.close;}voidsplit{fstreamoutfilel;fstreamoutfile2;outfile1.open("out1.txt",ios::out);outfile2.open("out2.txt",ios::out);inti=0:for(i=0;i<len/2;i++){outfilel<<buf[i];}do{//********3********}while(i!=len);outfilel.close;outfile2.close;}prwate:intlen;charbuf[1024];};voidmain{//********4********TCobj;obj.split;return;}47.使用VC++6.0打开考生文件夹下的源程序文件3.cpp。其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。每卖出一个水果,则计算水果的重量,还要计算所有卖出水果的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整。(1)定义类TCFruit的私有静态数据成员float型变量AllWeight和int型变量AllN0,请在注释1后添加适当的语句。(2)完成类TCFruit的带一个float型变量w的构造函数,并把这个w加到AllWeight中,并且AllNo自加。请在注释2后添加适当的语句。(3)在析构函数中,在AllWeight中减去weight,然后AllNo自减,请在注释3后添加适当的语句。(4)完成静态成员变量的初始化为0,请在注释4后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。试题程序:#include(iostream.h>classTCFruit{private:floatWeight;//********1********staticintAllNo;public:TCFruit(floatw){//********2********AllWeight+=w:AllNo++:}~TCFruit{//********3********AllWeight-=Weight:}voiddisplay{cout<<"SellaFruitwith"<<Weight<<"k9"<<endl;cout<<”Allsellnumber:"<<AllNo<<endl;cout<<"Allsellweight:"<<AllWeight<<"k9"<<endl<<endl;}};//********4********floatTCFruit::AllWeight=0.0;intmain{TCFruitFruitl(1.2);Fruitl.display;TCFruitFruit2(2.3);Fruit2.display;return0;}六、3.综合应用题(2题)48.使用VC6打开考生文件夹下的工程test19_3,此工程包含一个源程序文件test19_3.cpp,其中定义了用于表示向量的类vector,但类vector的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整。

(1)补充类vector的构造函数,该函数有参数x和y,它们都是int型的数据,默认值都为0。请使用参数列表的形式分别将类的数据成员a和b分别初始化为参数x和y的值。请在注释“//**1**”之后添加适当的语句。

(2)完成类vector的成员函数input(intx,inty)的定义,将int型的参数x和y分别赋值给数据成员a和b,请在注释“//**2**”之后添加适当的语句。

(3)完成类vector的友元函数frienddoubleMultiply(vector&x,vector&y)的定义,先定义double型的临时变量c,然后将参数对象x和对象y的数据成员a与b分别相乘再相加后赋值给c,最后返回c的值,将请在注释“//**3**”之后添加适当的语句。输出结果如下:

(10,20)

(2,3)

80

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

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

#include<iostream.h>

classvector

{

inta;

intb;

public:

//**1**

voidinput(intx,inty)

{

//**2**

}

voidoutput()

{

cout<<'('<<a<<','<<b<<")"<<end1;

}

frienddoubleMultiply(vector&x,vector&y);

}

doubleMultiply(vector&x,vector&y)

{

//**3**

c=x.a*y.a+x.b*y.b;

returnc;

}

voidmain()

{

vectorx(10,20),y;

doubled;

y.input(2,3);

d=Multiply(x,y);

x.output();

y.output();

cout<<d<<end1;

}

49.使用VC6打开考生文件夹下的工程test20_3,此工程包含一个源程序文件tes00_3.cpp,其中定义了用于表示复数的类comp,但类comp的定义并不完整。请按要求完成下列操作,将类comp的定义补充完整。

(1)定义comp的构造函数,函数含参数x和y,它们都是in,型的数据,默认值都为0,请使用参数列表的形式分别将类数据成员a和b初始化x和y的值。请在注释“//**1**”之后添加适当的语句。

(2)完成类comp的成员函数input(intx,inty)的定义,将int型的参数x和y分别赋值给数据成员s和b,请在注释“//**2**”之后添加适当的语句;

(3)完成类comp的友元函数friendcompplus(comp&x,comp&y)的定义,该函数首先要定义一个comp类的对象c,然后将参数x和y的数据成员a与b分别相加并分别赋值给c的成员a和b,最后返回c的值,请在注释“//**3**”之后添加适当的语句。输出结果如下:

10+20i

2+3i

result:12+23i

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

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

#include<iostream.h>

classcomp

{

inta;

intb;

public:

//**1**

friendcompplus(comp&x,comp&y);

voidinput(intx,inty)

{

//**2**

}

voidoutput()

{

cout<<a<<'+'<<b<<"i"<<end1;

}

};

compplus(comp&x,comp&y)

{

//**3**

c.b=x.b+y.b;

returnc;

}

voidmain()

{

compx(10,20),y,z;

y.input(2,3);

z=plus(x,y);

x.output();

y.output();

cout<<"result:";

z.output();

}

参考答案

1.C解析:由主函数main入手,首先x被赋值为3,a被赋值为4。然后调用fun函数,参数为4,所以在fun函数中的a=4。而主程序中的x作用域是由它定义开始到cout输出,在fun函数中无效。而在fun函数定义前的变量x作用域是整个程序,所以fun函数中的x值为5,这样c的值就为20。在主函数中的x+fun(a)中的x为靠近这条语句的x定义,即3,所以最后x的值为20+3=23。

2.A解析:C++中可以用文件流对象的下列成员函数来判别文件流的当前状态。

①函数isopen():判定流对象是否与一个打开的文件相联系,若是,返回true,否则返回false。

②函数good():刚进行的操作成功时返回true,否则返回false。

③函数fail():与good()相反,刚进行的操作失败时返回true,否则返回false。

④函数bad():如果进行了非法操作返回true,否则返回false。

⑤函数eof():进行输入操作时,若到达文件尾返回true,否则返回false。

其中,eof函数只能用于输入流操作。

3.D解析:虚函数一定不能定义为静态的。虚函数可以声明为友元,子类也不是必须重定义父类的虚函数,若在重定义虚函数时使用了virtual,则该重定义函数不一定还是虚函数。

4.D解析:20世纪70年代以来,提出了许多软件设计方法,主要有①逐步求精:对复杂的问题,应设计一些子目标作过渡,逐步细化;②自顶向下:程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化;⑧模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块,而可复用是面向对象程序设计的一个优点。

5.C解析:类模板可以有自己的数据成员,例如template<classT>。

6.D解析:C++中用友元函数重载运算符至少有一个参数,重载一目运算符要有一个参数,重载二目运算符要有两个参数。

7.C在数据库设计中,目前常用的数据模型主要有三种,分别是层次模型、网状模型和关系模型。

层次模型是数据库系统中最早出现的数据模型。我们通常把满足以下两个条件的数据模型称为层次模型。

(1)有且仅有一个结点无双亲,这个结点称为根结点。

(2)其他结点有且仅有一个双亲。

层次模型用树形结构来表示各实体与实体间的联系。实体是数据库中数据描述的对象,可以是一个人、一种商品等。在层次模型中,每个结点表示一个记录类型,记录之间的联系用结点之间的连线表示,这种联系是父子之间一对多的联系。记录就是描述实体的相关数据。

如果取消层次模型中的两个限制,即允许一个以上的结点无双亲,则每一个结点可以有多个父结点,便形成了网状。我们把网状表示实体之间联系的模型称为网状模型。

关系模型用表格形式表示实体类型及其实体间的联系。关系模型是目前最重要的一种模型,它是建立在严格的数学概念的基础上的,具有最坚实的理论基础。关系模型的基本数据结构是二维表,每一张二维表称为一个关系。

8.B解析:'Derivedb(2);¨以整数2实例化变量b,在执行Derived的构造函数时,以i+10即12去调用类Derived的父类的构造函数,将Base::x初始化为12,然后将Derived::x赋值为2。在执行b.dispb()时,先调用父类中的dispa,输出Base::x,即12,再输出Derived::x,即2,所以运行结果为“12,2”。

9.D解析:程序定义两个字符串指针p和q,并使指针分别指向字符串数组s1和s2。数组s1和s2通过输入的字符串赋初值。程序中第1个while语句,用来计算s1的长度,并把指针p移到数组s1的最后一个元素。第2个while语句,是将数组s2中的字符串合并到数组s1的后面。语句“*p'\\0';”,是合并后的字符串s1的结束标志。所以最后s1中的字符串为abcdghij。

10.D解析:队列是允许在一端进行插入而在另一端进行删除的线性表。在队列中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除。因此,队列又称为“先进先出”或“后进后出”的线性表。

11.D解析:重载函数至少要在参数个数或参数类型上有所不同。选项D)的重载函数只有返回值不同,其他(参数个数及类型)完全相同。因此,本题答案为D)。

12.Cc。【解析】data[2]是两个结构体组成的数组,p指向结构体数组的首地址,p->y访问第一个结构体的第二个元素;(++p)x访问第二个结构体的第一个元素。所以输出为10,2。

13.C解析:此题属于记忆性的题目,NULL是指未知的值或无任何值。

14.D解析:本题考核虚函数的应用。动态联编一直要到程序运行时才能确定调用哪个函数。虚函数是实现动态联编的必要条件之一。没有虚函数一定不能实现动态联编,但有虚函数存在时,必须同时满足下列条件,才能实现动态联编:类之间满足子类型关系;调用虚函数操作的是指向对象的指针或对象引用,或者是由成员函数调用虚函数。

15.D

16.C本题主要考查了成员对象。类TWO的数据成员是类ONE的对象one1和one2,main()函数中首先创建类TWO的对象t并提供初始值4,先执行成员对象one1的构造函数体,输出1;再执行成员对象one2的构造函数体,输出2,最后执行类TWO的构造函数体,输出3。因此本题程序运行时的输出结果是123。

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

18.AA。【解析】fstream.h包含有:fstream,ifstream,of—stream和fstreambase,以及iostream.h中的所有类。

19.D解析:本题考查数学表达式的掌握,首先应转换为弧度,然后作为COS函数的参数,求绝对值,最后是开方函数。考生需要掌握的是常用的数学函数。

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

21.D

22.B模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性,所以A错误,B正确。耦合性是模块间互相连接的紧密程度的度量而内聚性是指一个模块内部各个元素间彼此结合的紧密程度,所以C与D错误。故答案为B选项。

23.C

24.*q

25.(eh=filel.get())!=eof。(eh=filel.get())!=eof。解析:本题是判断文件是否达到结尾,可以使用流输入的get函数获得当前字符,然后判断该字符是否是eof即可。

26.2

27.成员选择运算符(或”.”);成员访问运算符(或"->")成员选择运算符(或”.”);成员访问运算符(或'->')解析:本题考查的是使用对象和对象指针访问成员所使用的符号的不同,考生请注意它们的区别。

28.~MyClas()~MyClas()解析:析构函数名是在类名前加符号“~”,它既没有返回值,也没有参数。

29.virtualpublicA

30.73.4。7,3.4。解析:函数的功能是求出数组中指定范围的元素中的最大值。所以在a数组中前四个数据中最大值为7,数组b中前3个元素中最大值为3.4。

31.11解析:将一个二元运算符重载为类的成员函数,其形参个数应该是1个;如果将二元运算符重载为类的友元函数,则其形参个数应该是2个。

32.操作符个数操作符个数解析:本题考查的是运算符重载的概念,用户重新定义的运算符不改变原运算符的优先性和结合性,也不改变运算符的语法结构.也就是说重载运算符不会产生新的运算符。

33.mainmain解析:所有的C++语言程序都是从main函数开始执行,而普通函数的存在是为了简化main函数的复杂程度。

34.函数重载虚函数函数重载\r\n虚函数解析:C++中的多态性是在编译时通过函数重载和模板体现的,在运行时是通过虚函数体现的。

35.A(aa)c(aa+1)或c(aa+1)A(aa)A(aa),c(aa+1)或c(aa+1),A(aa)

36.(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”。

37.(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]);”。38.(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;”应该是调用成员函数SetNumber赋值。在C++中成员函数的使用形式应该是:对象名.成员函数,所以修改为“obj1.SetNumber(10);”。类是对象的抽象,而对象是类的具体实例。第3处“TC.SetNumber(100);”语句中的TC为类,并不是对象,这里应该使用定义的对象,即obj2,所以将语句修改为“obj2.SetNumber(100);”。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)应改为“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(…)”。

41.(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);”。

42.(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(…)”。

43.(1)应改为“TCobjl(1);”。

\n(2)应改为“0bj1.SetNumber(10);”。

\n(3)应改为“0bj2.SelNumber(100);”。

\n【解析】本题第1处的“TCobjl;”语句是声明TC类的对象0bj1,根据TC类构造函数的定义TC(inti),存在整型参数,并且题目要求第一个输出结果两1,所以补全参数1,即第1处的“TCobjl(1);”。第2处处的“objl.number=10;”应该是调用成员函数SetNumber赋值。在C++中成员函数的使用形式应该是:对象名.成员函数,所以修改为“o

温馨提示

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

评论

0/150

提交评论