欢迎来到天天文库
浏览记录
ID:38581854
大小:127.00 KB
页数:22页
时间:2019-06-15
《C++二级上机改错题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、上机改错题1、该程序运行时有错误,请改正错误,使得程序正常运行,并且要求最后一个catch()必须抛出执行的任何异常。程序通过抛出异常输出:error0ERROR注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。#includeintmain(){try{throw("error");}//********error********catch(chars){cout<2、<3、)"是字符型的,所以第2个标识下的语句修改为"catch(char*s)"。(2)第2个标识前的异常抛出语句为"throw((int)0);",其中的类型为int。所以对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则找不到匹配的catch块,那么系统就会调用一个系统函数,使程序终止运行。即第1个标识下的语句修改为"catch(inti)"。(3)如果在catch子句中没有指定异常信息的类型,那么就用删节号"…"表示它可以捕捉任何类型的异常信息,即修改为"catch(...)"。2、该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句:Test4、Class1:0TestClass2注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。#includestructTestClass1{TestClass1(inti=0){m_i=i;}voidprint(){cout<<"TestClass1:"<5、ivate:~TestClass2(){}};intmain(){//********error********TestClass1obj1();//********error********TestClass2obj2();obj1.print();obj2.print();return0;}【答案】(1)public:(2)TestClass1obj1(0);或TestClass1obj1;(3)TestClass2obj2;【审题分析】程序要求输出TestClass1:0和TestClass2。从已定源程序的main主函数开始入手,可以看出程序首先定义TestClass1和TestC6、lass2类型的变量,然后通过调用其中的print成员函数实现输出结果。【解题思路】(1)第1个标识下的"private:~TestClass2()"是析构函数,它不是私有的,所以这里应该为"删除private:或修改为public:"。(2)第2个标识下的"TestClass1obj1();"语句是定义一个TestClass1类型的对象obj1(),根据类TestClass1构造函数的定义"TestClass1(inti=0)",知道存在整型参数,应该补充参数,或者只是先定义一个对象名,然后在使用时补充参数,即修改为"TestClass1obj1(0);或TestClass1obj1;"7、。(3)同理第3个标识下的"TestClass2obj2();"语句修改为"TestClass2obj2;"。3、该程序运行有问题,请改正main函数中的错误,使程序的输出结果是:nember=1nember=10nember=100注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。#includeclassTestClas
2、<
3、)"是字符型的,所以第2个标识下的语句修改为"catch(char*s)"。(2)第2个标识前的异常抛出语句为"throw((int)0);",其中的类型为int。所以对应的异常捕捉语句catch中应该符合这个类型,所以补充catch子句中的类型,否则找不到匹配的catch块,那么系统就会调用一个系统函数,使程序终止运行。即第1个标识下的语句修改为"catch(inti)"。(3)如果在catch子句中没有指定异常信息的类型,那么就用删节号"…"表示它可以捕捉任何类型的异常信息,即修改为"catch(...)"。2、该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句:Test
4、Class1:0TestClass2注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。#includestructTestClass1{TestClass1(inti=0){m_i=i;}voidprint(){cout<<"TestClass1:"<5、ivate:~TestClass2(){}};intmain(){//********error********TestClass1obj1();//********error********TestClass2obj2();obj1.print();obj2.print();return0;}【答案】(1)public:(2)TestClass1obj1(0);或TestClass1obj1;(3)TestClass2obj2;【审题分析】程序要求输出TestClass1:0和TestClass2。从已定源程序的main主函数开始入手,可以看出程序首先定义TestClass1和TestC6、lass2类型的变量,然后通过调用其中的print成员函数实现输出结果。【解题思路】(1)第1个标识下的"private:~TestClass2()"是析构函数,它不是私有的,所以这里应该为"删除private:或修改为public:"。(2)第2个标识下的"TestClass1obj1();"语句是定义一个TestClass1类型的对象obj1(),根据类TestClass1构造函数的定义"TestClass1(inti=0)",知道存在整型参数,应该补充参数,或者只是先定义一个对象名,然后在使用时补充参数,即修改为"TestClass1obj1(0);或TestClass1obj1;"7、。(3)同理第3个标识下的"TestClass2obj2();"语句修改为"TestClass2obj2;"。3、该程序运行有问题,请改正main函数中的错误,使程序的输出结果是:nember=1nember=10nember=100注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。#includeclassTestClas
5、ivate:~TestClass2(){}};intmain(){//********error********TestClass1obj1();//********error********TestClass2obj2();obj1.print();obj2.print();return0;}【答案】(1)public:(2)TestClass1obj1(0);或TestClass1obj1;(3)TestClass2obj2;【审题分析】程序要求输出TestClass1:0和TestClass2。从已定源程序的main主函数开始入手,可以看出程序首先定义TestClass1和TestC
6、lass2类型的变量,然后通过调用其中的print成员函数实现输出结果。【解题思路】(1)第1个标识下的"private:~TestClass2()"是析构函数,它不是私有的,所以这里应该为"删除private:或修改为public:"。(2)第2个标识下的"TestClass1obj1();"语句是定义一个TestClass1类型的对象obj1(),根据类TestClass1构造函数的定义"TestClass1(inti=0)",知道存在整型参数,应该补充参数,或者只是先定义一个对象名,然后在使用时补充参数,即修改为"TestClass1obj1(0);或TestClass1obj1;"
7、。(3)同理第3个标识下的"TestClass2obj2();"语句修改为"TestClass2obj2;"。3、该程序运行有问题,请改正main函数中的错误,使程序的输出结果是:nember=1nember=10nember=100注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。#includeclassTestClas
此文档下载收益归作者所有