第1题:
使用VC6打开考生文件夹下的工程ms9_1,此工程包含一个源程序文件test9_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
4,5
20
源程序文件test9_1.cpp清单如下:
include<iostream.h>
class A
{
protected:
int n,m;
public:
void set(int a,int b){m=a; n=b;)
void show(){cout<<m<<","<<n<<endl;)
/**********found*********/
}
class B:public A
{
int s;
public:
void set(){s=m*n;)
void shows(){cout<<s<<endl;)
};
void main()
{
B b;
/**********found**+******/
b.set();
b.show();
b.set();
/*********found**********/
b.show();
}
第2题:
使用VC6打开考生文件夹下的工程test33_1,此工程包含一个源程序文件test33_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
Number=1,2,3
sum=16
源程序文件test33_1.cpp清单如下;
include <iostream.h>
class Num
{
public:
/***************** found *****************/
void Num(int a,int b, int c);
void PrintNumber();
void PrintSum();
private:
int x,y,z;
static int sum;
};
/***************** found *****************/
int sum=10;
Num::Num(int a,int b, int c)
{
x=a;
y=b;
z=c;
sum=sum+x+y+c;
}
void Num::PrintNumber()
{
cout<<"Number="<<x<<","<<y<<","<<z<<end1;
}
void Num::PrintSum()
{
cout<<"sum="<<sum<<end1;
}
void main( )
{
Num m(1,2,3),*n;
n=&m;
m. PrintNumber();
/***************** found *****************/
n. PrintSum();
}
第3题:
使用VC6打开考生文件夹下的工程test28_1,此工程包含一个源程序文件test28_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
5
5
源程序文件test28_1.cpp清单如下:
include <iostream.h>
class A{
public:
/***************** found *****************
static int n=1;
A(){n++;};
~A() (n--;};
};
/***************** found *****************
int n=0;
int main() {
A a;
A b[3];
A *c=new A;
c=&a;
/***************** found *****************
cout<<c.n<<end1;
cout<<A::n<<end1;
return 0;
}
第4题:
使用VC6打开考生文件夹下的工程RevProj7。此工程包含一个源程序文件RevMain6.cpp,但该程序运行有问题。请改正主函数中的错误,使程序的输出结果是:
MyNumber=0
MyNumber=1
MyNumber=2
源程序文件RevMain6.cpp清单如下:
//RevMain6.cpp
include<iostream>
using namespace std;
class MyClass
{
public:
MyClass(int i)
{
MyNumber=i;
}
void SetMember(int m)
{
MyNumber=m;
}
int GetMember()const
{
return MyNumber;
}
void Print() const
{
cout<<"MyNumber="<<MyNumber<<end1;
}
private:
int MyNumber;
};
int main()
{
/* * * * * * * * *found* * * * * * * * *
MyClass *pObj=new MyClass(O);
pObj.Print();
/* * * * * * * * *found* * * * * * * * *
pObj->MyNumber = 1;
pObj->Print();
/* * * * * * * * *found* * * * * * * * *
MyClass. SetMember(2);
(*pObj).Print();
return O;
}
第5题:
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为 100 37 32 注意:错误的语句在//******error******的下面,修改该语句即可。 试题程序: include<iostream.h> //******error****** voidmain { //******error****** intm=0142: //******error****** intn=0X27: intq=32; cout<<m<<endl; cout<<n<<endl; cout<<q<<endl; return; }
第6题:
使用VC6打开考生文件夹下的工程test11_1,此工程包含一个源程序文件test11_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
ch1=7 ch2=9
源程序文件test11_1.cpp清单如下:
include<iostream.h>
class Sample
{
/**************** found ***************/
char ch1,ch2
public:
/************** found ***************/
friend void set(Sample s, char c1,char c2)
{
s.ch1=c1;
s.ch2=c2;
}
void print() {cout<<"ch1="<<" ch2="<<ch2<<end1;}
};
void main()
{
Sample obj;
/************* found ****************/
obj.set(obj,'7','9');
obj.print();
}
第7题:
使用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<<C.n<<endl; cout<<C0::n<<endl; }
第8题:
使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正错误,使得程序输出: Hello test 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在 //******error******的下面。 试题程序: include<iostream> //********error******** template<T> voidfun(Tt) { std::cout<<"test"<<std::endl; } //********error******** template<bool> voidfun(boolt) { std::cout<<(t?"Hell0":"Hi")<<std::endl; } intmain { //********error******** boolflag=TRUE; fun(flag); fun((int)flag); return0; }
第9题:
使用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;
}
(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(…)”。
第10题:
使用VC6打开考生文件夹下的工程test42_1,此工程包含一个源程序文件test42_1.cpp,但该程序运行有问题,请改正函数中的错误,使该程序的输出结果为:
rect area: 12
rectb area: 30
源程序文件test42_1.cpp清单如下:
include <iostream.h>
class CRectangle
{
/***************** found *****************/
int *width, height;
public:
CRectangle (int,int);
~CRectangle ();
int area (void) {return (*width * *height);}
};
CRectangle::CRectangle (int a, int b)
{
width = new int;
height = new int;
/***************** found *****************/
width = a;
*height = b;
}
CRectangle::~CRectangle ()
{
delete width;
delete height;
}
/***************** found *****************/
void main ()
{
CRectangle rect (3,4), rectb (5,6);
cout << "rect area: "<< rect.area() << endl;
cout << "rectb area: "<< rectb.area() << endl;
return 0;
}