问答题使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:  Max is 7  提示:max()函数实现找出两个数中的最大值,并作为函数值返回。  注意:错误的语句在∥******error******的下面,修改该语句即可。

题目
问答题
使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为:  Max is 7  提示:max()函数实现找出两个数中的最大值,并作为函数值返回。  注意:错误的语句在∥******error******的下面,修改该语句即可。
参考答案和解析
正确答案: 1.将语句“int max(int a, int b)”修改为“int max(int&a,int &b)”
2.将语句“max(-3,n);”修改为“max(m,n);”
解析:1.函数max采用的参数传递机制是传地址,因此第1个标识下应该将语句“int max(int a, int b)”修改为“int max(int&a,int &b)”。
2.调用函数max,实参类型应为一个整型变量,第2个标识下应将语句“max(-3,n);”修改为“max(m,n);”。
解析: 暂无解析
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

使用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为类的对象指针,访问类成员函数时使用符号“->”,而不能用“.”。

第2题:

使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出为 10 TC1 注意:不要改动main函数,不能增加或删除行,也不能 更改程序的结构,错误的语句在//******error******的下面。 试题程序: include<iostream> classTC1 { public: TC1 { } //********error******** private: virtual~TC1 { usingnamespacestd; cout<<"TCl"<<endl; } }; classTC2:publicTC1 { public: //********error******** explicitTC2(inti) { m_i=i; } TC2&operator(inti) { this->m_i=i; } voidprint { //********error******** cout<<m_j<<endl; } private: intm_i; }; voidfun(TC2C1) { C1.print; } intmain { fun(TC2(10)); return0; }


正确答案:
(1)删除“private:”语句。
(2)应改为“TC2(inti)”。
(3)应改为“std::cout<<m_i<<std::endl;”或添加“usingnamespacestd;”。
【解析】本题中第1处的“virtual~TC1”语句是TC1析构函数,不是私有函数,所以删除“private:”。第2处“ex-plicitTC2(inti)”构造函数语句中的“explicit”是禁止隐式转换。程序中无法实现对类TC2的直接使用,所以这里应该将其删除。即“TC2(inti)”。在第3处实现fun函数中m-i的标准输出,即在屏幕上输出10。在程序中用到C++标准库时,要使用std标准命名空间进行限定。cout为标准库函数,所以要声明cout是在命名空间std中定义的流对象,即“std::cout<<m_i<<std::endl;”或者添加“usingnamespacestd;”。

第3题:

以下函数 findmax 拟实现在数组中查找最大值并作为函数值返回 , 但程序中有错导致不能实现预定功能

#define MIN -2147483647

int findmax (int x[],int n)

{ int i,max;

for(i=0;i<n;i++)

{ max=MIN;

if(max<x[i]) max=x[i];}

return max;

}

造成错误的原因是

A) 定义语句 int i,max; 中 max 未赋初值

B) 赋值语句 max=MIN; 中,不应给 max 赋 MIN 值

C) 语句 if(max<x[i]) max=x[i]; 中判断条件设置错误

D) 赋值语句 max=MIN; 放错了位置


正确答案:D

第4题:

使用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(…)”。


第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题:

使用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;”。

第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题:

考生文件夹下有一个数据库“学校管理”,其中有数据库表“student”、“score”和“course”

(1)在考生文件夹下有程序文件“cxl.prg”,该程序的功能是检索分数小于60的学生的全部信息。请修改程序中的错误,并调试该程序,使之正确运行。考生不得增加或删减代码。

(2)编写程序“cx2.prg”,实现“输入一个数判断其是否为素数”的功能。


正确答案:
【考点指引】本大题第1小题主要考查改正在使用SQL过程时容易产生的错误;第2小题主要是简单编程,这里要用到数学函数、取整函数和循环语句。
(1)【操作步骤】
①在命令窗口中输入命令:MODI COMM cx1(回车执行),打开程序文件编辑窗口,在程序文件编辑窗口中将原程序:SELECT*FROM student WHERE学号=(SELECT学号FROM score WHERE成绩<60)中的“=”改成“IN”,关闭程序文件编辑窗口并保存程序文件。
②在命令窗口中输入命令:DO cx1(回车执行),执行程序文件。
(2)【操作步骤】
①在命令窗H中输入命令:MODI COMM cx2(回车执行),打开程序文件编辑窗口,在程序文件编辑窗口中输入以下程序代码:
INPUT〝请输入一个>2的整数:〞TO aa
bb=.T.
FoR i=2 TO INT(SQRT(aa))
IF aa/i=INT(aa/i)THEN
?STR(aa)+〝不是素数!〞
bb=.F.
EXIT
ENDIF
NEXT
IF bb THEN
?STR(aa)+〝是素数!〞
ENDIF
关闭程序文件编辑窗口并保存程序文件。
②在命令窗口中输入命令:DO cx2(回车执行),执行程序文件。

第9题:

请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,该工程含有一个源程序文件pn,jl.cpp。其中位于每个注释“//ERROR 木}}水found}}水木”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: The value is 10 注意:只修改注释“//ERROR **** found****”的下一行语句,不要改动程序中的其他内容。 //pmjl.cpp include<iostream> using namespace std; class MyClass{ int value; public: //ERROR********found********* void MyClass(int val):value(val){} int GetValueconst{return value;} void SetValue(int val); }; //ERROR********found******** inline void SetValue(int val){value=val;} int main MyClass obj(O); obj.SetValue(10); //ERROR********found********下列语句功能是输出obj的成员value的值 tout<<”The value is”<<obj.value<<endl: return 0; }


正确答案:
(1)MyClass(int val):value(val){}
(2)void MyClass::SetValue(int val){value=val;}
(3)cout“”The value is”“obj.GetValue“end1;

第10题:

使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句: TC1:0 TC2 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。 试题程序: include<iostream.h> structTC1 { TCl(inti=0) { m_i=i; } voidprint { cout<<"TCl:"<<m_i<<endl; } intm_i; }; classTC2 { public: TC2 { } voidprint { cout<<"TC2"<<endl: } //********error******** private: ~TC2 { } }; intmain { //********error******** TC1obj1; //********error******** TC20bj2; obj1.print; obj2.print; return0; }


正确答案:
(1)应改为“public:”。
(2)应改为“TClobj1(0);”或“TClobjl;”。
(3)应改为“TC20bj2;”。
【解析】本题第1处的“private:~TC2”是析构函数,它不是私有的,所以这里应该删除“private:”或修改为“pub-lic:”。第2处的“TClobjl;”语句是定义一个TCl类型的对象objl,根据类TCl构造函数的定义“TCl(inti=o)”,知道存在整型参数,应该补充参数,或者只是先定义一个对象名,然后在使用时补充参数,即修改为“TClobjl(0);或TClobil;”。第3处的“TC20bj2;”语句修改为“TC20bj2;”。

更多相关问题