2021年二级上机改错题.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

159****9606 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档