- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上机改错题
1、该程序运营时有错误,请改正错误,使得程序正常运营,并且规定最后一种catch() 必要抛出执行任何异常。
程序通过抛出异常输出:
error
0
ERROR
注意:不要改动main函数,不能增行或删行,也不能更改程序构造,错误语句在//******error******下面。
#include iostream.h
int main()
{
try
{
throw(error);
}
//********error********
catch(char s)
{
coutsendl;
}
try
{
throw((int)0);
}
//********error********
catch()
{
coutiendl;
}
try
{
throw(0);
throw(error);
}
//********error********
catch()
{
coutERRORendl;
}
return 0;
}
【答案】
(1)catch(char* s)
(2)catch(int i)
(3)catch(...)
【审题分析】
本程序是对各种异常信息解决。try-catch构造中,catch子句用来捕获异常信息。
【解题思路】
(1)第1个标记前异常抛出语句为throw(error);,其中类型为字符串。因此相应异常捕获语句catch中应当符合这个类型,而程序中给出语句catch(char s)是字符型,因此第2个标记下语句修改为catch(char* s)。
(2)第2个标记前异常抛出语句为throw((int)0);,其中类型为int。因此相应异常捕获语句catch中应当符合这个类型,因此补充catch子句中类型,否则找不到匹配catch块,那么系统就会调用一种系统函数,使程序终结运营。即第1个标记下语句修改为catch(int i)。
(3)如果在catch子句中没有指定异常信息类型,那么就用删节号…表达它可以捕获任何类型异常信息,即修改为catch(...)。
2、 该程序运营时有错,请改正错误,使得程序对的执行,并且输出如下语句:
TestClass1:0
TestClass2
注意:不要改动main函数,不能增行或删行,也不能更改程序构造,错误语句在//******error******下面。
#include iostream.h
struct TestClass1
{
TestClass1(int i=0)
{
m_i = i;
}
void print()
{
coutTestClass1:m_iendl;
};
int m_i;
};
class TestClass2
{
public:
TestClass2()
{
}
void print()
{
coutTestClass2endl;
};
//********error********
private:
~TestClass2()
{
}
};
int main()
{
//********error********
TestClass1 obj1();
//********error********
TestClass2 obj2();
obj1.print();
obj2.print();
return 0;
}
【答案】
(1)public:
(2)TestClass1 obj1(0);或TestClass1 obj1;
(3)TestClass2 obj2;
【审题分析】
程序规定输出TestClass1:0和TestClass2 。从已定源程序main主函数开始入手,可以看出程序一方面定义TestClass1和TestClass2类型变量,然后通过调用其中print成员函数实现输出成果。
【解题思路】
(1)第1个标记下private: ~TestClass2()是析构函数,它不是私有,因此这里应当为删除private:或修改为public:。
(2)第2个标记下TestClass1 obj1();语句是定义一种TestClass1类型对象obj1(),依照类TestClass1构造函数定义TestClass1(int i=0),懂得存在整型参数,应当补充参数,或者只是先定义一种对象名,然后在使用时补充参数,即修改为TestClass1 obj1(0);或TestClass1 obj1;。
(3)同理第3个标记下TestClass2 obj2();语句修改为TestClass2 obj2;。
3、 该程序运营有问题,请改正main函数中错误,使程
文档评论(0)