计算机类二级C++

2013年9月全国计算机等级《二级C++》上机临考冲刺试卷(3)

43 题含答案C++
共 43 题返回本类
1单选题1 / 43
下列程序的输出结果为(  )。
#include
classTestClass
{
public:
TestClass(){val++;}
static,intval;
};
intTestClass::val=0;
voidmain()
{
TestClasscsl;
cout<<csl.val<<"";
TestClasscs2;
TestClasscs3,cs4;
cout<<cs2.val<
}
查看答案
C. 14
2单选题2 / 43
下列叙述中正确的是(  )。
查看答案
D. 以上三种说法都不对
3单选题3 / 43
下列叙述中正确的是(  )。
查看答案
B. 静态类别变量的生存期贯穿于整个程序的运行期间
4单选题4 / 43
下列关于虚基类的描述,错误的是(  )。
查看答案
B. 虚基类的构造函数在非虚基类之后调用
5单选题5 / 43
有如下程序:
#include
usingnamespacestd;
classPoint{
intX,Y;
public
point(intx1=0,inty1=O)tx(x1),y(y1){}
intget(){returnx+y;}
};
classCircle{
pointcenter;
intradius;
public
circle(intCX,intcy,intr):center(cx,cy),radius(r)
{}
intget(){returncenter.get()+radius;)
};
intmain(){
circlec(3,4,5);
cout<<c.get()<
return0;
}
运行时的输出结果是(  )。
查看答案
D. 12
6单选题6 / 43
设有定义charstr[80];以下不能将输入数据first\nsecond\n读取到数组str中的语句是(  )。
查看答案
D. cin.read(str,strlen(str));
7单选题7 / 43
若PAT是一个类,则程序运行时,语句“PAT(*ad){3};”调用PAT的构造函数的次数是(  )。
查看答案
A. 0
8单选题8 / 43
有两个关系R、S如下所示:
  
由关系R通过运算得到关系S,则所使用的运算为(  )。
查看答案
B. 投影
10单选题10 / 43
若MyClass是一个类名,其有如下语句序列:
MyClassc1,*c2;
MyClass*c3=newMyClass;
MyClass&c4=c1;
上面的语句序列所定义的类对象的个数是(  )。
查看答案
B. 2
11单选题11 / 43
有3个关系R、S和T如下表所示:
  
则由关系R和S得到关系T的操作是(  )。
查看答案
C. 除
13单选题13 / 43
有下列二叉树,对此二叉树前序遍历的结果是(  )。
  
查看答案
B. ABDGCEHE
14单选题14 / 43
以下不能正确创建输出文件对黎并使其与磁盘文件相关联的语句是(  )。
查看答案
D. ofstream*myfile=new("d:ofile.txt");
15单选题15 / 43
对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是(  )。
查看答案
D. 快速排序为n(n-1)/2
16单选题16 / 43
对下列二叉树进行中序遍历的结果是(  )。
  
查看答案
A. ACBDFEG
17单选题17 / 43
下列关于纯虚函数与抽象类的描述巾,错误的是(  )。
查看答案
C. 一个基类声明了纯虚函数,该基类的派生类一定不是抽象类
19单选题19 / 43
下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他3条语句不同,该语句是(  )。
查看答案
D. tout<<setw(6)<
20单选题20 / 43
有如下程序:
#include
usingnamespacestd;
classPoint{
intX,y;
public:
Point(intx1=0,inty1=0):X(x1),y(y1){}
intget(){returnx+y;}
};
classCircle{
Pointcenter;
intradius;
public:
Circle(intCX,intcy,intr):center(CX,cy),radius(r)
{}
intget(){returncenter.get()+radius;}
};
intmain(){
Circlec(3,4,5);
cout<<c.get()<
return0;
}
运行时的输出结果是(  )。
查看答案
D. 12
21单选题21 / 43
下列枚举类型的定义中,包含枚举值3的是(  )。
查看答案
A. enumtest{RED,YELLOW,BLUE,BLACK};
22单选题22 / 43
类模板templateclassX{…},其中友元函数f对特定类型T(如int),使函数f(x)成为x模板类的友元,则其说明为(  )。
查看答案
B. friendvoidf(x);
23单选题23 / 43
下列各组类型声明符中,含义相同的一组是(  )。
查看答案
B. signedshort和short
24单选题24 / 43
以下程序的输出结果是(  )。
voidmain(  )
{inta=4,b=5,c=0,d;
d=!a&&!b‖!c;
cout<<d<
}
查看答案
A. 1
25单选题25 / 43
下列关于运算符重载的描述中,正确的是(  )。
查看答案
A. 运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符
26单选题26 / 43
有如下四个语句:
①cout<<'A'<<seifill('*')<<left<<setw(7)<<'b'<
②cout<<setfill('*')<<left<<setw(7)<<'a'<<'b'<
③cout<<'A'<<serfill('*')<<right<<setw(7)<<'b'<
④cout<<setfill('*')<<right<<setw(7)<<'a'<<'b'<
其中能显示A******B的是(  )。
查看答案
C. ②和③
27单选题27 / 43
下列代码段声明了3个类:
classPerson{);
classStudent:publicPerson{};
classUndergraduate:Student{);
下列关于这些类之间关系的描述中,错误的是(  )。
查看答案
B. 类Undergraduate从类Student公有继承
28单选题28 / 43
下列选项中不属于软件生命周期开发阶段任务的是(  )。
查看答案
C. 软件维护
29单选题29 / 43
有如下程序:
#include
usingnamespacestd;
voidf1(int&X,int&y){intz=x;x=y;y=z;}voidf2(intX,inty){intz=x;x=y;y=z;}intmain(){
intx=10,y=26;
f1(x,y);
f2(x,y);
cout<<y<
return0;
}
运行时的输出结果是(  )。
查看答案
A. 10
30单选题30 / 43
最简单的交换排序方法是(  )。
查看答案
D. 冒泡排序
31单选题31 / 43
下列语句都是程序运行时的第一条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是(  )。
查看答案
D. cout<<setw(6)<
32单选题32 / 43
下列关于栈叙述正确的是(  )。
查看答案
A. 栈顶元素最先能被删除
33单选题33 / 43
将运算符“+”重载为非成员函数,下列原型声明中,错误的是(  )。
查看答案
C. MyCloekoperator+(long,long);
34单选题34 / 43
下列各类函数中,不是类的成员函数的是(  )。
查看答案
C. 派生类
35单选题35 / 43
下面关于break语句的描述中,不正确的是(  )。
查看答案
D. break语句可用于if条件判断语句内
36单选题36 / 43
若有如下程序:
#include
usingnamespacestd;
classTestClassl
{
private:
inta;
public:
TestClassl(inti)
{
a=i:
}
voiddisp(  )
{
cout<<a<<",";
}
};
classTestClass2
{
private:
intb:
public:
TestClass2(intj)
{
b=j;
}
voiddisp()
{
cout<<b<<",";
}
};
classTestClass3:publicTestClass2,publicTestClassl
{
private:
intc;
public:
TestClass3(intk):TestClass1(k-2),TestClass2(k+2)
{
c=k:
}
voiddisp()
{
TestClasssl::disp();
TestClasss2::disp();
cout<<c<
}
};
intmain()
{
TestClass30bj(10);
obj.disp();
return0;
}
程序执行后的输出结果是(  )。
查看答案
D. 8,12,10
37单选题37 / 43
下列是重载为非成员函数的运算符函数原型,其中错误的是(  )。
查看答案
C. Fraction&operator=(Fraction&,Fraction);
38单选题38 / 43
下列关于函数模板的描述中,正确的是(  )。
查看答案
D. 通过使用不同的类型参数,可以从函数模板得到不同的实例函数
39单选题39 / 43
若目前D盘根目录下并不存在test.txt文件,则下列打开文件方式不会自动创建test,txt文件的是(  )。
查看答案
A. ifstreamfin;fin.open("d:\\test.txt",iso_base::in);
40单选题40 / 43
数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是(  )。
查看答案
C. DBS包括DB和DBMS
41主观题41 / 43
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:
sizeof(S1)=5
sizeof(s2)=10
sizeof(s3)=1
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
(1)不能删除assert()语句。
(2)只能修改后面的数字。
提示:assert函数如果为假,则会产生一个中断异常。
试题程序:
#include
#include
voidmain()
{
char*s1="abc":
//********error********
assert(sizeof(s1)==3):
cout<<"sizeof(s1)=5"<
chars2[10]="ab":
//********error********
assert(sizeof(s2)==2);
cout<<"sizeof(s2)=10"<
chars3=23:
//********error********
assert(sizeof(s3)==4);
cout<<"sizeof(s3)=1"<
return;
}
查看答案
(1)应改为“AssErt(sizEoF(s1)==4);”。
(2)应改为“AssErt(sizEoF(s2)==1O);”。
(3)应改为“AssErt(sizEoF(s3)==1);”。
42主观题42 / 43
使用VC++6.o打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char*str1,char*str2),此函数的功能是计算str1中出现str2的个数,当不出现时,则返回0。
例如:
str1为“asdfsfdfg”
str2为“sf”则返回1
str2为“df”则返回3
注意:不能修改函数的其他部分。
试题程序:
#include
//注意只能使用int类型,不能类型转换
intfun(char*str1,char*str2)
{
}
voidmain()
{
charstr1[1024];
charstr2[256];
cout<<"pleaseinputastring:"<
cin.getline(str1,1024);
cout<<"pleaseinputotherstring;"<<endl
cin.getline(str2,256);
cout<
cout<
return;
}
查看答案
intFun(ChAr*str1.ChAr*str2)
{
intsizE=0;
intstrllEn;
intstr2lEn;
For(strllEn=0;str1[strllEn]!=0;strllEn++);
For(str21En=0;str2[str21En]!=0;str2lEn++);
For(inti=0:i<strllEn;i++)
{
intj=0;
For(;j<str21En;j++)
iF(strl[i+j]!=str2[j])
BrEAk;
iF(i==str21En)
{
++sizE;
i+=j;
}
}
rEturnsizE;
}
43主观题43 / 43
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示矩形的CRect类,但类CRect的定义并不完整。请按要求完成下列操作,将类CRect的定义补充完整。
(1)定义私有数据成员leftPoint、topPoint、rightPoint、bottomPoint,分别用于表示矩形左上角及右下角的点的坐标,它们都是double型的数据。请在注释1之后添加适当的语句。
(2)完成默认构造函数CRect的定义,指定默认实参为0,它们都是double型的数据。请在注释2之后添加适当的语句。
(3)定义函数体为空的析构函数。请在注释3之后添加适当的语句。
(4)在main函数中定义GReet类的实例rect2,并把re-
ct1的值赋给rect2。请在注释4之后添加适当的语句。
注意:除在指定位置添加语句之外,不要改动程序中的其他内容。
试题程序:
#include
classCRect
{
private:
//********1********
public:
//********2********
//********3********
voidSetPoints(double,double,double,double);
voidSetLeftPoint(doublem){leftPoint=m;}
voidSetRightPoint(doublem){rightPoint=m;}
voidSetTopPoint(doublem){topPoint=m;}
voidSetBottomPoint(doublem){bottomPoint=m;}
voidDisplay();
};
CReet::CRect(double1,doublet,doubler,doubleb)
{
leftPoint=1;topPoint=t;
rightPoint=r;bottomPoint=b;
}
voidCRect::Setpoints(double1,doublet,doubler,doubleb)
{
leftPoint=1;topPoint=t;
rightPoint=n;bottomPoint=b;
}
voidCRect::Display()
{
cout<<"left-toppointis("<<leftpoint<<","<<top-
Point<<")"<<'\n';
cout<<"right-bottompointis("<<rightpoint<<","
< <bottompoint<<")"<<'\n';
}
voidmain()
{
CRectrect0;
rect0.Display();
rect0.SetPoints(20,20.6,30,40);
rect0.Display();
CRectrectl(0,0,150,150);
rect1.SetTopPoint(10.5);
rect1.SetLeftPoint(10.5);
//********4******** rect2.Display( );}
查看答案
(1)应添加“DouBlElEFtPoint,topPoint,riGhtPoint,hot-tomPoint;”。
(2)应添加“CREEt(DouBlElEFtPoint=0,DouBlEtopPoint=0,DouBlEriGhtPoint=0,DouBlEBottomPoint=O);”。
(3)应添加“~CREEt(){}”。
(4)应添加“CREEtrECt2(rECt1);”。
← 上一卷下一卷 →