问答题 使用VC++6.0打开下的源程序文件1.cpp,该程序运行时有错误,请改正其中的错误,使得程序正确运行。 程序输出: s1:n=20 s2:n=10 执行s3.add(s1, s2) s3:n=30 s4:n=30 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。 试题程序: #include<iostream.h> class TC { int n; public: TC(){} TC(int m) { n=m; } //********error******** TC add(TC s1, s2) { this->n=s1.n+s2.n; //********error******** return(this); } void disp() { cout<<"n="<<n<<endl; } //********error******** } void main() { TC s1(20), s2(10), s3, s4; cout<<"s1:"; s1.disp(); cout<<"s2:"; s2.disp(); s4=s3.add(s1, s2); cout<<"执行s3.add(s1, s2)/ns3:"; s3.disp(); cout<<"s4:"; s4.disp(); }
【正确答案】答案考生文件夹
(1)应改为“TC add(TC s1, TC s2)”。
(2)应改为“return(*this);”。
(3)应改为“};”。
【答案解析】[解析] 本题中的变量“s2”没有声明类型,所以补充“s2”的类型,即“TC add(TC s1, TC s2)”。“this->n=s1.n+s2.n;”语句中的this变量为指针变量,所以第2处的“return(this);”返回语句中的this变量,应该返回指针型,所以修改为“return(*this);”。C++中类的定义格式应为“class类名{};”,以分号为结尾,所以在第3处的类结尾处补充分号“;”,即修改为“};”。