### C++二级上机改错题解析 #### 题目背景 全国计算机等级考试(简称NCRE)是一项旨在评估考生计算机应用能力的标准化测试。其中C++二级考试包括理论部分与实践操作部分。上机考试通常包含多套试题,每套试题由若干题目组成,这些题目覆盖了C++语言的基础知识、程序设计能力和调试技巧等方面。 #### 题目概述 本次解析的题目来源于全国计算机等级考试C++二级的上机考试部分,共包含三道改错题。这些题目涉及异常处理、类与对象的概念以及构造函数和析构函数的使用等知识点。 #### 详细解析 ### 第一题:异常处理 **题目要求**: - 程序运行时有错误,需要改正错误,确保程序能够正常运行。 - 最后一个`catch()`必须能捕获并执行任何类型的异常。 - 程序输出应为: - `error` - `0` - `ERROR` **程序代码**: ```cpp #include<iostream.h> int main() { try { throw("error"); } //********error******** catch(char s) { cout << s << endl; } try { throw((int)0); } //********error******** catch() { cout << i << endl; } try { throw(0); throw("error"); } //********error******** catch() { cout << "ERROR" << endl; } return 0; } ``` **答案解析**: 1. **第一个标识**:抛出的是字符串类型的异常,因此`catch`子句应该改为`catch(char *s)`,而不是`catch(char s)`。 2. **第二个标识**:抛出的是整型异常,因此`catch`子句应该添加变量声明,改为`catch(int i)`。 3. **第三个标识**:需要一个能够捕获所有类型异常的`catch`子句,因此保持原样`catch()`即可。 ### 第二题:类与对象 **题目要求**: - 改正错误,使程序能够正确执行。 - 输出结果应为: - `TestClass1:0` - `TestClass2` **程序代码**: ```cpp #include<iostream.h> struct TestClass1 { TestClass1(int i = 0) { m_i = i; } void print() { cout << "TestClass1:" << m_i << endl; }; int m_i; }; class TestClass2 { public: TestClass2() { } void print() { cout << "TestClass2" << endl; }; //********error******** private: ~TestClass2() { } }; int main() { //********error******** TestClass1 obj1(); //********error******** TestClass2 obj2(); obj1.print(); obj2.print(); return 0; } ``` **答案解析**: 1. **第一个标识**:析构函数不应该为私有,将其修改为公有,或者删除`private:`关键字。 2. **第二个标识**:`TestClass1 obj1();`语句创建了一个临时对象,但未赋值;应修改为`TestClass1 obj1;`或`TestClass1 obj1(0);`。 3. **第三个标识**:`TestClass2 obj2();`同样创建了一个临时对象,应修改为`TestClass2 obj2;`。 ### 第三题:构造函数与输出问题 **题目要求**: - 改正`main`函数中的错误,使程序输出结果为: - `number=1` - `number=2` **提示**:此题未提供完整的程序代码,无法直接进行代码修改,但可以根据题目要求推测需要解决的问题。例如,可能需要修正构造函数或成员变量初始化的问题,确保对象被正确创建并设置相应的成员变量值,以便输出正确的结果。
- 粉丝: 1
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助