}
A.00 B.23 C.34 D.25
18. 对于拷贝构造函数和赋值操作的关系,正确的是( )。
A.拷贝构造函数和赋值操作是完全一样的操作
B.进行赋值操作时,会调用类的构造函数
C.当调用拷贝构造函数时,类的对象正在被建立并被初始化
D.拷贝构造函数和赋值操作不能在同一个类中被同时定义
19.对于模板定义关键字class和typename说法不正确的是(
A.程序中的class并不能都替换为typename
和typename都可互相替换
C.程序中的typename都能替换为class
D.程序中的部分class可以替换为typename
。 )
20.若有以下定义: inta[]={1,2,3,4,5,6,7}; charc1=b,c2=2;
则数值不为2的表达式是( )。
A.a[1] 1 C.a[3-c2] D.c2-0
21. 下列函数中,( )是对文件进行写操作的。
() () () ()
22.下面对静态数据成员的描述中,正确的是( )。
A.静态数据成员可以在类体内进行初始化
B.静态数据成员不可以被类的对象调用
C.静态数据成员不能受private控制符的作用
D.静态数据成员可以直接用类名调用
23.下列特征中不是面向对象方法的主要特征的是( )。
A.多态性 B.继承 C.封装性 D.模块化
三、2.填空题(12题)
24. Staff类含有血型数据成员ID,两个Staff 对象相等是指它们的ID
相同。下面的函数重载了运算符“==”,它用来判断两个Staff 对象是否
相等,相等时返回true,否则返回false。请将空格处缺失部分补充完整。
boo Staffi:: Staff ==(const Smff &s)
{
return(【 】);
}
25. 下面程序的输出是:
***********5.23
5.23***********
请将下划线上遗漏的部分补充完整。
#include<iostream>
#include<iomanip>
using namespace std;
void main(){
double i=5.23;
cout<<【 】<<setw(14)<<i
cout<<endl<<【 】<<setw(14)<<i;
}
26. 在C++中,下列程序段的输出结果是【 】。
int x, a[10];
cout<<sizeof(x)<<“”<<sizeof(a)<<“”<<sizeof(float)<<end1
27. 下列函数的功能是判断字符串str是否对称,对称则返回true,否则
返回false。请在横线处填上适当内容,实现该函数。
bool fun(char *str)
{
int i=0,j=0;
while(str[j])______;
for(j--;i<j && str [i]==str[j];i++,j--);
return i______j;
}
28. 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对
象,但是只能访问从基类继承的成员。下列程序没有使用多态机制,其
输出结果是______。
#include<iostream>
using namespace std;
class Base{
public:
void print(){cout<<'B';}};
class Derived:public Base{
public:
void print(){cout<<'D';}};
int main()
{
Derived* pd=new Derived();
Base* pb=pd;
pb->print();
pd->print();
delete pd;
return 0;
}
29. 有如下定义:
class MA{
int value;
public:
MA(int n=0):value(n){}
};
MA*ta,tb;
其中MA类的对象名标识符是______。
30. 以下程序的执行结果是______。
#include<iostream.h>
class Sample
{
int n;
public:
Sample(){}
Sample(int m){n+m;)
int&operator--(int)
{
n--
return n;
}
void disp () {cout<<"n= "<<n<<end1;}
}
void main ()
{
Sample s
31. 若有以下程序:
#include <iostream>
using namespace std;
#define PI 3.14
class Point
{
private:
int x,y;
public:
Point (int a,int b)
{
x=a;
y=b;
}
int getx ()
{
return x;
}
int gety()
{
return y;
}
};
class Circle : public Point
{
int r;
public:
Circle(int' a, int b,int C) : Point (a, b)
{
r=c;
}
int getr()
{
return r;
}
double area()
{
return PI*r*r;
}
};
int main()
{
Circle c1(5,7,10);
cout<<()<<end1;
return 0;
}
程序执行后的输出结果是【 】。
32. 若有以下定义及初始化语句:
int i=100;
int *ip=& i;
int k=*ip;
并假设整型数i的地址为0x12345678,指针中的地址为0x21000000,则
k的值为【 】。
33. 下列程序的输出结果是______。
#include<iostream>
using namespace std;
class Test {
public:
Test() { cnt++;}
~Test() {cnt--;}
static int Count() {return cnt;}
private:
static int cnt;
};
int Test::cnt=0;
int main()
{
cout<<Test::Count()<<'';
Test t1,t2;
Test*oT3=new Test;
Test*pT4=new Test;
cout<<Test::Count()<<'';
delete pT4;
delete pT3;
cout<<Test::Count()<<endl;
return 0;
}
34. 数据的基本单位是【 】。
35. C++程序是从【 】函数开始执行的。
四、程序改错题(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="<
}
//******error******
TC:TC
{
COUI<<"Destructor"<}
voidmain
{
TCa;
a.display;
}
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="<
}
//******error******
TC:TC
{
COUI<<"Destructor"<}
voidmain
{
TCa;
a.display;
}
38.使用VC++6.0打开考生文件夹下的源程序文件
1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实
现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在
//******error******的下面。
试题程序:
#include
#include
//********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:"<cin.getline(s,1024);
WriteFile(s);
return0;
}
39.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序
要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可
能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出
到屏幕中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******error******的下面。
试题程序:
#include
voidmain
{
inti=0;
charstr[120];
cout<<"Enterastringendwith?."<//********error********
cin.getline(str,120);
//********error********
while(str)
{
//********error********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
}
cout<return;
}
40.使用VC++6.0打开考生文件夹下的源程序文件1.cpp。本程序要
求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输
入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕
中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******error******的下面。
试题程序:
#include
voidmain
{
inti=0;
charstr[120];
cout<<"Enterastringendwith?."<//********error********
cin.getline(str,120);
//********error********
while(str)
{
//********error********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
}
cout<return;
}
41.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序
运行时有错误,请改正错误,使程序正常运行,并且要求最后一个
catch必须抛出执行的任何异常。
程序异常,输出信息为
error
O
ERROR
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******error******的下面。
试题程序:
#includeintmain
{
try
{
throw("error");
}
//********error********
catch(chars)
{
cout<
}
try
{
throw((int)0);
}
//********error********
catch
{
cout<
}
try
{
throw(O);
throw("error");
}
//********error********
catch
{
cout<<"ERROR"<}
return0;
}
42.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序
运行有问题,请改正main函数中的错误,使程序的输出结果为:
number=1
number=10
number=100
注意:不要改动main函数,不能增加或删除行。也不能更改程序的结
构,错误的语句在//******error******的下面。
试题程序:
#include
classTC
{
public:
TC(inti)
{
number=i;
}
voidSetNumber(intm)
{
number=m;
}
intGetNumberconst
{
returnnumber;
}
voidPrintconst
{
cout<<"number="<}
private:
intnumber;
};
voidmain
{
//********error********
TCobjl;
objl.Print;
TCobj2(3);
//********error********
objl.number=10;
//********error*‰******
TC.SetNumber(100);
objl.Print;
obj2.Print;
}
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;
}
44.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,但该程
序运行有问题,请改正main函数中的错误,使该程序的输出结果正
确。
程序输出:
8
8
注意:错误的语句在/********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<cout<}
45.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序
运行时有错误,请改正错误,使程序正常运行,并且要求最后一个
catch必须抛出执行的任何异常。
程序异常,输出信息为
error
O
ERROR
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******error******的下面。
试题程序:
#includeintmain
{
try
{
throw("error");
}
//********error********
catch(chars)
{
cout<
}
try
{
throw((int)0);
}
//********error********
catch
{
cout<
评论列表(0条)