使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正其中的错误,使程序正常运行,并且输出

题目
问答题
使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正其中的错误,使程序正常运行,并且输出以下结果:  4,5.  7,8  4,8.  注意:错误的语句在//******error******的下面,修改该语句即可。
参考答案和解析
正确答案: 1.将语句“virtual void move(int a; int b)”修改为“virtual void move(int a, int b)”
2.将语句“CObj1(int i, int j,int k):(i,j)”修改为“CObj1(int i, int j,int k):CObj0(i,j)”
3.将语句“print();”修改为“CObj0::print();”
解析:1.虚函数的声明方式为:virtual <类型说明符> <函数名>(<参数表>),参数表中各参数之间应该用逗号隔开,因此第1个标识下应改为“virtual void move(int a, int b)”。
2.主函数调用构造函数CObj1时,传递了四个实参,完成对变量m、n、x和y的初始化,变量 x和y是基类CObj0的数据成员,初始化通过基类构造函数CObj0(int i,int j)来完成,第2个标识下应改为“CObj1(int i, int j,int k):CObj0(i,j)”。
3.由程序运行结果可知标识3下执行基类的print()函数,需要通过类名来指定需要调用的print()函数,即第3个标识下应改为“CObj0::print();”。
解析: 暂无解析
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第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();

}


正确答案:(1)错误:} 正确:}; (2)错误:b.set(); 正确:b.A::set(45); (3)错误:b.show(); 正确:b.shows();
(1)错误:} 正确:}; (2)错误:b.set(); 正确:b.A::set(4,5); (3)错误:b.show(); 正确:b.shows(); 解析:(1)主要考查考生对类定义格式的掌握,类的结尾应该使用“;”;
(2)主要考查考生对基类与派生类函数调用关系的掌握,根据所要求的输出结果,应该调用的函数为类A的set,而不是类B自身的set函数,应该避免调用的二义性;
(3)主要考查考生对继承与派生的理解,由所要求输出结果可知正确:b.shows()。

第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();

}


正确答案:(1) 错误:void Num(int aint bint c); 正确:Num(int aint bint c); (2) 错误:int sum=10; 正确:int Num::sum=10; (3) 错误:n.PrintSum(); 正确:n->PrintSum();
(1) 错误:void Num(int a,int b,int c); 正确:Num(int a,int b,int c); (2) 错误:int sum=10; 正确:int Num::sum=10; (3) 错误:n.PrintSum(); 正确:n->PrintSum(); 解析:(1)函数Num为构造函数,构造函数不指定返回类型,其隐含有返回值,由系统内部使用;
(2)由于静态数据成员sum是类Num的成员,因此在初始化时必须使用作用域运算符限定其所属的类;
(3)n为指向类Num对象的指针,其访问公有成员函数需使用“->”,而不能使用“.”。

第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;

}


正确答案:(1) 错误:static int n=1; 正确:static int n; (2) 错误:int n=0; 正确:int A::n=0; (3) 错误:coutc.nend1; 正确:coutc->nend1;
(1) 错误:static int n=1; 正确:static int n; (2) 错误:int n=0; 正确:int A::n=0; (3) 错误:coutc.nend1; 正确:coutc->nend1; 解析:(1)在类的声明中只能对静态数据成员进行引用性声明,不能进行静态数据成员的初始化:
(2)由于静态数据成员是类的成员,所以在初始化时必须限定它所属的类:
(3)c为类的对象指针,访问类成员函数时使用符号“->”,而不能用“.”。

第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; }


正确答案:
(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;”。

第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();

}


正确答案:(1)错误:char ch1ch2 正确:char ch1ch2; (2)错误:friend void set(Sampleschar c1char c2) 正确:friend void set(Sample &schar c1char c2) (3)错误:obj. set(obj'7''9'); 正确:set(obj'7''9');
(1)错误:char ch1,ch2 正确:char ch1,ch2; (2)错误:friend void set(Samples,char c1,char c2) 正确:friend void set(Sample &s,char c1,char c2) (3)错误:obj. set(obj,'7','9'); 正确:set(obj,'7','9'); 解析:(1)主要考查考生对于变量定义格式的掌握,结尾应该使用“;”;
(2)主要考查考生对于传值调用与引用调用区别的掌握,为了改变对象的值,在这里应该使用引用调用;
(3)主要考查考生对于友元函数概念的理解,友元函数而不是当前类的成员函数,而是独立于当前类的外部函数,在使用时应该直接调用不需要使用对象访问。

第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; }


正确答案:
(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;”。

第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; }


正确答案:
(1)应改为“template<classT>”。
(2)删除“template(bool)”。
(3)应改为“boolflag=true;”。
【解析】C++中的模板类格式为template<classT>,所以第1处的语句“template<T>”应修改为“template(classT>”。在第2处的“voidfun(boolt)”函数中,t变量为布尔型变量,是C++中的基础变量,不是模板变量,没有使用到模板类,所以删除第2处的模板类型定义语句。第3处的“boolflag=TRUE;”是声明布尔型变量flag,并将其值赋为逻辑真。而TRUE并不是合法值,C++中区分大小写,所以逻辑真值应为true,即“boolflag=true;”。

第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;

}


正确答案:(1) 错误:int*widthheight; 正确:int*width*height; (2) 错误:width=a; 正确:*width=a; (3) 错误:void main() 正确;int main()
(1) 错误:int*width,height; 正确:int*width,*height; (2) 错误:width=a; 正确:*width=a; (3) 错误:void main() 正确;int main() 解析:(1)根据后面类中构造函数的定义可以看出只有定义成指针的变量才能动态申请空间,所以本题的错误在于没有把变量 height定义成指针类型;
(2)变量width是指针类型的变量,直接给它赋值相当于让它指向一个新的地址,而要改变它指向的变量的值,应该使用取内容符号“*”:
(3)根据主函数最后的返回值情况,可知该主函数是需要定义成带返回值的函数,本题的错误在于,把主函数定义成了void,改成int即可,考生一定要注意函数定义的返回值和最后实际的返回情况是否一一对应。

更多相关问题