版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年安徽省合肥市全国计算机等级考试C++语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、1.选择题(10题)1.语句ofstreamf(“DATA.DAT”,ios_base::app|ios_base::binary);的功能是建立流对象f,并试图打开文件DATA.DAT并与之连接,而且()。
A.若文件存在,将文件指针定位于文件首;若文件不存在,建立一个新文件
B.若文件存在,将其截为空文件,若文件不存在,打开失败
C.若文件存在,将文件指针定位于文件尾;若文件不存在,建立一个新文件
D.若文件存在,打开失败;若文件不存在,建立一个新文件
2.下面的程序的结果是main(){intx=3,y=0,z=0;if(x=y+z)cout<<"****";elsecout<<"####";}
A.有语法错误不能通过编译
B.输出****
C.可以通过编译,但是不能通过连接,因而不能运行
D.输出####
3.下列运算符中不能在C++中重载的是()
A.?:B.+C.-D.<=
4.下面程序的输出结果是#include<iostream.h>#include<string.h>voidmain(){charp1[10],p2[10]strcpy(p1,"abc");strcpy(p2,"ABC");charstr[50]="xyz";strcpy(str+2,strcat(p1,p2));cout<<str;}
A.xyzabcABCB.zabcABCC.xyabcABCD.yzabcABC
5.下述关于成员函数的描述,正确的是()。
A.成员函数一定是内联函数B.成员函数不可以重载C.成员函数不可以有默认值D.成员函数可以是静态的
6.如果进栈序列为e1、e2、e3、e4,则可能的出栈序列是()。
A.e3、e1、e4、e2B.e2、e4、e3、e1C.e3、e4、e1、e2D.任意顺序
7.E-R模型设计属于数据库的______。
A.概念设计B.逻辑设计C.物理设计D.程序设计
8.以下程序的功能是按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出:main(){intn,k,floatscore,sum,ave;sum=0.0;for(n=1;n<=10;n++){for(k=1;k<=4;k++){cin>>score;sum+=score;}ave=sum/4.0cout<<"No"<<n<<":"<<ave<<end1;}}上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是
A.sum=0.0
B.sum+=score
C.ave=sun/4.0
D.cout<<"No"<<n<<":"<<ave<<end1;
9.下面程序的运行结果是()。#include<iostream.h>classbase{protected:inta;public:base(){cout<<“0”;}};Classbasel:Virtualbase{public:basel(){cout<<“1”;}};Classbase2:virtualbase{public:base2(){cout<<“2”;)
A.0123B.3120C.0312D.3012
10.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是()
A.数据库系统B.文件系统C.人工管理D.数据项管理
二、单选题(13题)11.在C++程序中,如果要求通过函数来实现一种简单的功能,并且要求尽可能加快程序执行速度,则应该选用()。
A.内联函数B.重载函数C.递归调用D.嵌套调用
12.有如下类定义
classMyClass
public:
Private:
intdata;
};
若要为MyClass类重载流输入运算符>>,使得程序中可以“cin>>obj;”形式输入MyClass类的对象obj,则横线处的声明语句应为()。A.friendistream&operator>>(istream&is,MyClass&A);
B.friendistream&operator>>(istream&is,MyClassA);
C.istream&operator>>(istream&is,MyClass&A);
D.istream&operator>>(istream&is,MyClassA);
13.若有表达式“(w)?(--x):(++y)”,则其中与w等价的表达式是()。
A.w==1B.w==0C.W!=1D.W!=0
14.下面不属于需求分析阶段任务的是()。
A.确定软件系统的功能需求B.确定软件系统的性能需求C.需求规格说明书评审D.制定软件集成测试计划
15.待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第()个位置。
A.3B.5C.7D.9
16.实现运行时的多态性要使用()。
A.重载函数B.析构函数C.构造函数D.虚函数
17.有如下程序:#include<iostream.h>usingnamespacestd;classDemo{public:Demo(){cout<<"defaultconstructor\n";}Demo(constDemo&x){cont<<"copyconstruc-tor\n";}};DemouserCode(Demob){Democ(b);returnC;}intmain(){Demoa;d;cout<<"callinguserCode()\n";d=userCode(a):return0;}执行上面程序的过程中,构造函数Demo()和Demo(constDem0&x)被调用的次数分别是()。A.1和1B.1和2C.2和3D.2和4
18.有如下函数模板声明:template<typenameT>TMax(Ta,Tb){return(a>b)?a:b;}下列对函数模板Max()的调用中错误的是()。
A.Max(3.5,4.5)
B.Max(3.5,4)
C.Max<double>(35,4.5)
D.Max<double>(3.5,4)
19.由于常对象不能被更新,因此A.通过常对象只能调用它的常成员函数
B.通过常对象只能调用静态成员函数
C.常对象的成员都是常成员
D.通过常对象可以调用任何不改变对象值的成员函数
20.下列4项中,必须进行查询优化的是______。A.A.关系数据库B.网状数据库C.层次数据库D.非关系模型
21.下面叙述中错误的是A.软件测试的目的是发现错误并改正错误
B.对被调试的程序进行“错误定位”是程序调试的必要步骤
C.程序调试通常也称为Debug
D.软件测试应严格执行测试计划,排除测试的随意性
22.建立一个有成员对象的派生类对象时,各构造函数体的执行次序为()。A.派生类、成员对象类、基类B.成员对象类、基类、派生类C.基类、成员对象类、派生类D.基类、派生类、成员对象类
23.下列语句中,与语句“n=(a>b?(b>c?1:0):0);”的功能等价的是()。
A.if(a<=b)n=0;
B.if((a>b)‖(b>c))n=1;elsen=0;
C.if(a>b)if(b>c)n=1;elsen=;elsen=0;
D.if(a>b)n=1;elseif(b<=c)n=1;elseif(b>c)n=1;elsen=0;
三、2.填空题(12题)24.以下程序输出结果为______。
#include<iostream>
usingnamespacestd;
classTestClass1
{
public:
TestClass1(){}
TestClass1(inti)
{x1=i;}
voiddispa()
{cout<<"x1="<<x1<<",";}
private:
intx1;
}:
classTestClass2:publicTestClass1
{
public:
TestClass2(){}
TestClass2(inti):TestClass1(i+10)
{
x2=i:
}
voiddispb()
{
dispa();
cout<<"x2="<<x2<<end1;
}
private:
intx2:
}:
intmain()
{
TestClass2b(2):
b.dispb();
return0;
}
25.执行语句序列
intx=10,&r=X;
cout<<x<<'-',<<r<<endl;
输出结果为【】。
26.带有虚基类的多层次派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样对虚基类的子对象初始化【】次。
27.以下程序的执行结果是______。
#include<iostream.h>
voidmain()
{
cout.filll('*');
cout.width(10);
cout<<123.45<<endl:
cout.width(8);
cout<<123.45<<endl;
cout.width(4);
cout<<123.45<<endl;
}
28.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。
29.以下程序运行后的输出结果是【】。
#include<iostream.h>
main()
{
inti=10,j=0;
do
{
j=j+i;i--;
}
while(i>2);
cout<<j;
}
30.关系操作的特点是【】操作。
31.流成员函数______返回当前流的状态。
32.关键字ASC和DESC分别表示【】的含义。
33.有以下程序:
#include<iostream>
usingnamespacestd;
longfib(intn)
{
if(n>2)
return(fib(n-1)+fib(n-2));
else
return2;
}
intmain()
{
cout<<fib(3)<<endl;
return0;
}
则该程序的输出结果应该是______。
34.有以下程序段:
#include<iostream.h>
#defineMIN(x,y)(x)<(y)?(x):(y)
voidmain()
{
inti,j,k;
i=10;j=15;
k=10*MIN(i,j);
cout<<k<<endl;
}
程序执行后的输出结果是【】。
35.类中包含了一个静态成员函数,则main函数中和P.f1(P);语句具有同样功能的语句为______。
#include<iostream.h>
classM
{public:
M(intA){A=a;B+=a;}
staticvoidf1(Mm);
private:
intA;
staticintB;};
voidM::f1(Mm)
{
cout<<“A=“<<m.A((end1;
cout<<“B=”<<m.B<<en
四、程序改错题(10题)36.使用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;}
37.使用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;
}
38.使用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;
}
39.使用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;}
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函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******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;}
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,该程序运行时有错误,请改正程序中的错误,使得程序输出:
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;
}
45.使用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;
}
五、综合应用题(2题)46.使用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;}
47.(1)“while”应改为“while(infile.get(ch))”。
(2)应添加“bur[len++]=ch;bur[len]=ch;len++;”。
(3)应添加“outfile2<<bur[i++];”或“outfile2<<buf[i];i++;”。
(4)“TCobj;”应改为“TCobi("in.txt");”。
【解析】本题考查了文件流的使用。根据题意,第1处要获得一个字符,并判断是否到文件结尾,所以应使用get函数;第2处应将ch存入buf数组,同时让len增1;第3处将buf中的字节输出给outfile2,注意同时让i增1,否则while循环将进入死循环;第4处TC只确一个带char*参数的构造函数,所以创建对象时必须使用构造参数,根据题意这个参数应该是“"in.txt"”。
六、3.综合应用题(2题)48.使用VC6打开考生文件夹下的工程test17_3,此工程包含一个源程序文件test17_3.cpp,其中定义了用于表示点的类Point和表示内容的类Text以及二者的派生类CircleWithText,但它们的定义并不完整。请按要求完成下列操作,将它们的定义补充完整。
(1)定义类Point的构造函数,请使用参数列表的形式将成员函数x和y分别初始化为参数x1和y1的值。请在注释“//**1**。”之后添加适当的语句。
(2)完成类Text的构造函数Text(char*str)的定义,将char型的str指向的内容赋值给text并且输出str所指向的内容,请在注释“//**2**”之后添加适当的语句。
(3)定义类CircleWithText的构造函数CircleWithText(intcx,intcy,char*msg),int型的cx和cy用于赋值给x和y,char型的指针*msg用于赋值给text,请在注释“//**3**”之后添加适当的语句。
输出结果如下:
Point:34
hello
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test17_3.cpp清单如下:
#include<iostream.h>
#include<string.h>
classPoint
{
intx,y;
public:
//**1**
{
cout<<"Point:"<<x<<''<<y<<'\n';
}
~Point(){}
};
classText
{
chartext[100];
public:
Text(char*str)
{
//**2**
}
~Text(){}
};
classCircleWithText:publicPoint,publicText
{
public:
//**3**
{}
~CircleWithText(){}
};
voidmain()
{
CircleWithTextcm(3,4,"hello");
}
49.使用VC6打开考生文件夹下的工程test41_3。此工程包含一个test41_3.cpp,其中定义了类Rectangle,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)定义类Rectangle的私有数据成员left,top和fight,bottom,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。
(2)添加类Rectangle的带四个int型参数1、t、r、b的构造函数的声明,并使这四个参数的默认值均为0,请在注释“//**2**”之后添加适当的语句。
(3)添加类Rectangle的成员函数SetTop()参数为int型的t,作用为把t的值赋给类的数据成员top,添加类Rectangle的成员函数SetBottom()参数为int型的t,作用为把t的值赋给类的数据成员bottom,请在注释“//**3**”之后添加适当的语句。
(4)完成派生类Rectangle的成员函数Show()的定义,使其以格式“right-bottompointis(right,bottom)”输出,请在注释“//**4**”之后添加适当的语句。
源程序文件test41_3.cpp清单如下:
#include<iostream.h>
classRectangle
{
//**1**
intright,bottom;
public:
//**2**
~Rectangle(){};
voidAssign(int1,intt,intr,intb);
voidSetLeft(intt){left=t;}
voidSetRight(intt){right=t;}
//**3**
voidSetBottom(intt){bottom=t;}
voidShow();
};
Rectangle::Rectangle(int1,intt,intr,intb)
{
left=1;top=t;
right=r;bottom=b;
}
voidRectangle::Assign(int1,intt,intr,intb)
{
left=1;top=t;
right=r;bottom=b;
}
voidRectangle::Show()
{
cout<<"left-toppointis("<<left<<","<<top<<")"<<'\n';
//**4**
}
voidmain()
{
Rectanglerect;
rect.Show();
rect.Assign(100,200,300,400);
rect.Show();
}
参考答案
1.C解析:C++中可以在定义文件沈对象的同时打开文件,也可以在定义文件流对象以后用open函数打开文件。可以通过构造函数或open函数的第2个参数,确定文件的打开模式。
2.D解析:注意本题本意是考察x==y+z,但是少写了一个=,因此逻辑表达式变成了赋值语句,故x的值为0,即假,因此程序执行else部分。本题答案为D。
3.A解析:本题考查运算符的重载。Ct+中,“::、*、、?:”这4个运算符不能重载。
4.C解析:该函数的调用方式是strcpy(字符数组,字符串)其中“字符串”可以是串常量,也可以是字符数组。函数的功能是将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志'\\0'一起复制。②不能用赋值运算符“=”将一个字符串直接赋值给一个字符数组,只能用strcpy()函数来处理。strcat(字符数组,字符串)功能是把“字符串”连接到“字符数组”中的字符串尾端,并存储于“字符数组”中。“字符数组”中原来的结束标志,被“字符串”的第一个字符覆盖,而“字符串”在操作中未被修改。使用该函数时注意:①由于没有边界检查,编程者要注意保证“字符数组”定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题。②连接前两个字符串都有结束标志'\\0',连接后“字符数组”中存储的字符串的结束标志'\\0'被舍弃,只在目标串的最后保留一个'\\0'。
5.D解析:成员函数可以是静态的。
6.B解析:由栈“后进先出”的特点可知:A中e1不可能比e2先出,C中e3不可能比e4先出,且e1不可能比e2先出,D中栈是先进后出的,所以不可能是任意顺序。所以B是正确的。它执行的顺序是:e1进栈→e2进栈→e2出栈→e3进栈→e4进栈→e4出栈→e3出栈→e1出栈,所以只看出栈序列应为e2,e4,e3,e1。
7.A
8.A解析:本题编译没有错误,但是执行结果确实错误的。细心的考生可以发现,第一个考生的乘积输入完之后,sun的值并没有被清空,接着累加第二个考生的分数,随后进行四门平均是错误的,所以需要内层循环和平均值计算完毕后进行sum的清空。
9.A解析:本题考查的是含有虚基类的继承中构造函数的调用顺序,应该先调用基类的构造函数,接着是按照派生类继承列表的顺序依次调用虚基类的构造函数,最后调用派生类自己的构造函数。
10.A在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是数据库系统这一阶段。数据库系统阶段用数据模型来表示复杂的数据,有较高的数据独立性。数据库系统为用户提供了方便的用户接口,用户既可使用查询语言或终端命令操作数据库,也可以用程序方式来操作。数据库管理系统提供了数据控制功能。
11.AA。【解析】本题考查的是内联函数的相关知识点。C++引入内联函数是用它来代替C语言中的预处理宏函数,内联函数在调用时,是将表达式用内联函数体来替换,这样会加快程序的执行速度。
12.A
13.DD。【解析】本题考查三目运算等。条件表达式的格式为a?b;c。它的含义是,当a为真时,取b的值,否则取c的值。在C语言程序中“为真”即“不等于零”,“为假”即等于0。所以和w等价的表达式是w非零。
14.D在软件开发的过程中,应该尽早的制定测试计划,其中在需求分析阶段制定系统测试计划
15.BB.【解析】快速排序的基本思想是:从表中选取一个元素(如本题中的33),将表中小于此元素的移到前面,大于此元素的移到后面,结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表再次分割……本题中33作为分割的中界线,第一趟排序后排在比它小的18、9、25、12后面。
16.D解析:本题考核虚函数的应用。动态联编一直要到程序运行时才能确定调用哪个函数。虚函数是实现动态联编的必要条件之一。没有虚函数一定不能实现动态联编,但有虚函数存在时,必须同时满足下列条件,才能实现动态联编:类之间满足子类型关系;调用虚函数操作的是指向对象的指针或对象引用,或者是由成员函数调用虚函数。
17.CC。【解析】函数Demo为构造函数,而Demo(constDemo&x)为复制构造函数。C++在创建一个对象时,会自动调用类的构造函数,所以语句"Demoa,d;"将调用函数Demo2次。当一个对象作为实参传递给函数时为初始化形参,要调用拷贝构造函数;在函数返回一个对象时调用拷贝构造函数。由此可知语句d=userCode(a);调用拷贝构造函数3次。
18.BB。【解析】本题考查函数模板的引用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是,说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否调用函数模板中的对应形参。本题选项B中,编译系统从第一个参数“3.5”获得信息“double型数据”和从第二个参数获得信息“int型数据”,两者矛盾。
19.A解析:本题考查了常对象与常成员函数的概念。使用const关键字修饰的对象称为常对象,它的特点是不能被更新;使用const关键字声明的成员函数称为常成员函数,它的特点也是不能更新对象的数据成员。因为其他成员函数没有这个限制,即可以更新对象的数据成员,所以通过常对象只能调用常成员函数而不能调用其他成员函数,而且常成员函数也只能调用常成员函数而不能调用其他成员函数,否则它们的特性就会被打破。故应该选择A。
20.A解析:关系数据模型诞生之后迅速发展,深受用户喜爱,但关系数据模型也有缺点,其最主要的缺点是由于存取路径对用户透明,查询效率往往不如非关系数据模型。因此,为了提高性能,必须对用户的查询请求进行优化。
21.A软件测试的目的是为了发现错误而执行程序的过程,并不涉及改正错误,所以选项A错误。程序调试的基本步骤有:错误定位、修改设计和代码,以排除错误、进行回归测试,防止引进新的错误。程序调试通常称为Debug,即排错。软件测试的基本准则有:所有测试都应追溯到需求、严格执行测试计划,排除测试的随意性、充分注意测试中的群集现象、程序员应避免检查自己的程序、穷举测试不可能、妥善保存测试计划等文件。故答案为A选项。
22.C解析:此题考查的是继承中的构造函数。构造函数不能够被继承。派生类构造函数的调用顺序如下:①调用基类的构造函数,调用顺序按照它们继承时说明的顺序;②调用子对象类的构造函数,调用顺序按照它们在类中说明的顺序;③派生类构造函数体中的内容。
23.CC。【解析】根据三元表达式:?的规则,当a>b时,结果为表达式b>c?1:0,其意义为if(b>c),则结果为1。其表达的意义和C选项一样。
24.x1=12x2=2x1=12,x2=2解析:由主函数main入于,首先定义类TestClass2的对象b,成员数据为2。然后调用dispb函数。dispb中首先执行dispa函数,TestClass2为TestClass1的派生类,“TestClass2(inti):TestClass1(i+10)”所以TestClass1中的x1=12,所以dispa输出的结果为x1=12。在TestClass1中x2=2,所以dispb中的输出语句“cout<<'x2='<<x2<<end1;”中输出x2=2。即答案为“x1=12,x2=2”。
25.10-10
26.一次一次解析:当一个派生从多个基类派生,而这些基类又有一个共同的基类,当对该基类中说明的成员进行访问时,可能出现二义性。虚基类就是为了解决这种二义性问题提出来的。使用虚基类解决二义性问题的关键是在派生类中只产生一个虚基类子对象,因此,带有虚基类的多层次派生类构造函数的成员初始化列表中对虚基类的子对象只初始化一次。
27.****123.45**123.45123.45
28.n/2n/2解析:性表的任何位置插入一个元素的概率相等,即概率为P=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。
29.52
30.集合集合解析:在关系操作中,所有操作对象与操作结果都是关系。而关系定义为元数相同的元组的集合。因此,关系操作的特点是集合操作。
31.rdstate()
32.升序排列和降序排列升序排列和降序排列解析:ASC表示升序排列,DESC表示降序排列,多用在索引定义和SELECT语句中的ORDER子句中。
33.44解析:本题主要考查C++中递归函数。递归函数即自调用函数,在函数体内部直接或间接的自己调用自己,即函数的嵌套调用是函数本身。递归调用分为直接递归调用和间接递归调用两种形式。本题程序为求解典型递归数列Fibonacci数列中任意项值的简化程序(主函数中的调用改成fib(n)即变成求解任意项值)。主函数通过调用fib()函数,fib()函数内部再通过一个分支结构判断是否进行递归调用或退出递归调用,调用方式为直接递归调用。主函数通过实参将值3赋给fib()函数的形参n,由于n=3满足if分支语句条件,因此函数进行递归调用,即计算fib(2)和fib(1)的值;将2赋给fib()函数的形参后,由于n=2不满足if分之语句条件,因此程序退出递归,返回2;将1赋给fib()函数的形参后,函数同样返回2。因此函数递归调用的最终结果为返回2+2=4,即fib(3)=4,程序最后输出值为4。
34.15
35.M::f1(P);。M::f1(P);。解析:由于f1是类M的静态成员函数,即说明类M的任何对象都共享一份f1,因此,不仅可以从对象那里访问f1,还可以用域操作符::通过类名来访问。
36.(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;”。
37.(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”。
38.(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)”。
39.(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(…)”。
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)应改为“ein.getline(str,120,?);”。
(2)应改为“while(str[i])”。
(3)应改为“if(str[i]>=a&&str[i]<=2)”。
【解析】本题中要求以输入字符“?”为结束符,用于字符输入的流成员函数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)”。
43.(1)应改为“TC::TC”。(2)应改为“voidTC::display”。(3)应改为“TC::~TC”。【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个类,使用格式为“(类名)::<成员函数>((参数函数)),因此第1处应改为“TC::TC”,默认构造函数没有参数。由第2处“TC::display”后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数返回值为void,因此第2处的语句应改为“voidTC::display”。由第3处的语句“TC::TC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名相同,并在前面加“~”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC::~TC”。
44.(1)应添加“public:”。
\n(2)“inti”应改为“inti(10);”。
\n(3)“i++;”应改为“i--;”。
\n【解析】本题主要考查的是成员的访问属性。成员的访问属性有公有、保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类的对象被访问。故应在构造函数前添加“public:”,否则该类无法被实例化。变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造参数,题目已要求使用后者。本题要求输出5个数,while的循环变量i每次减1,在i>5时循环,故i初始化应为10。若循环中i每次增1,则循环永远不会退出。
45.(1)应改为“usingnamespacestd;”。
\n(2)应改为“outl.open('1.txt',ios::binary|ios::app);”。
\n(3)应改为“out1.put(s[i]);”。
\n【解析】本题第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]);”。
46.(1)应添加“staticfloatAllWeight;”。(2)应添加“Weight=w;”。(3)应添加“AllNo--;”。(4)应添加“intTCFru
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 抑郁心情测试题及对应答案
- 江苏污水处理测试题与答案分享
- 贝壳现场勘查相关试题及答案
- 2026年湖南省专升本英语写作专项提升习题
- 2026年汽车维修电工实操测试
- 2026年公共服务人员法律法规知识题库
- 2026年社区工作者社区服务规划测试卷
- 2026年心理健康与心理疾病识别测试
- 2026年湖南省人教版四年级英语下册第7单元词汇巩固习题
- 旅游目的地形象塑造与营销策略解析试卷及答案
- 患者健康教育方法及技巧
- 汉服妆造培训
- T/CECS 10214-2022钢面镁质复合风管
- 急诊科转诊制度
- GB/T 44709-2024旅游景区雷电灾害防御技术规范
- 架空乘人装置司机培训考试题库及答案
- DL∕T 5776-2018 水平定向钻敷设电力管线技术规定
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- 第一章 护理礼仪与美学课件
- 手术前后病人的护理
- 宠物医院动物医疗价目表
评论
0/150
提交评论