C++改错,求改错结果以及原因分析
一:
程序位于每个“//ERRORfound”下的语句行有错误,请加以更正。
更正后程序的输出应该是:
0
10
[程序]
//main.cpp
#include<iostream>
using namespace std;
class Class_Object{
public:
//ERROR**********found**********
void Class_Object(int=0);
void set(int);
int get();
private:
int member;
};
Class_Object::Class_Object(int m):member(m){}
void Class_Object::set(int m)
{
//ERROR**********found**********
m=member;
}
int Class_Object::get()
{
return member;
}
int main()
{
Class_Object test;
cout<<test.get()<<endl;
//ERROR**********found**********
test.member=10;
cout<<test.get()<<endl;
system("pause");
return 0;
}
说明:
只能修改每个“//ERRORfound”下的那一行,不要改动程序中的其他内容,也不能删除或移动“//ERRORfound”。
二
在主函数中定义了一个幂类的对象,程序实现了求xn并输出结果。请在程序中“//found”下的横线处填写适当的代码,然后删除横线,以实现上述类定义。
此程序的正确输出结果应为:
0.5^0=1
0.5^1=0.5
2^10=1024
2^-3=0.125
[程序]
//main.cpp
#include<iostream>
using namespace std;
class Powers{
public:
void print(double,int); // 按指定格式输出结果
double features(double x,int n); // 用递归法求x的n次方的值,即xn
};
//**********found**********
void ____________ print(double x,int n)
{
//**********found**********
cout<<x<<'^'<<n<<'='<< ____________ <<endl;
}
double Powers::features(double x,int n)
{
int k;
if(n==0)return 1.0; // x的0次方为1
else if(n==1)return x; // x的1次方为x
else if(n<0){ // n<0时x的n次方的值
//**********found**********
____________ ;
return 1/x*features(x,k);
}
else{ // n>0且n不为1时x的n次方的值
k=n-1;
//**********found**********
return ____________ ;
}
}
int main()
{
Powers test;
test.print(0.5,0);
test.print(0.5,1);
test.print(2,10);
test.print(2,-3);
return 0;
}