首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个参数改变后执行不正确的有关问题

2012-02-19 
一个参数改变后执行不正确的问题#includeiostream.hclassFib{private:intvalueintfibpublic:voidget()

一个参数改变后执行不正确的问题
#include   <iostream.h>
class   Fib
{
private:
int   value;
int   fib;
public:
void   get();
void   CalFib();
void   Display()
{
cout < < "Fib= " < <fib < <endl;
}
};
inline   void   Fib::get()
{   int   Fib_N;

cout < < "请输入数列的第n项! " < <endl;
cout < < "n= ";
cin> > Fib_N;

value=Fib_N;
fib=1;
}
void   Fib::CalFib()
{
int   n=value;
if(n==0||n==1)   fib=n;
else  
{
int   oneback=1,twoback=0,current;
for(int   i=2;i <=n;i++)
{
current=oneback+twoback;
                        twoback=oneback;
oneback=current;
}
fib=current;
}
}
void   main()
{
Fib   myFib;
myFib.Fib::get();
myFib.CalFib();
myFib.Display();
}


这是一个斐波那契数列的计算   要求计算第n项       为什么我把     value替换成n结果就不对了       我犯的是什么错误?     谢谢了

[解决办法]
class Fib
{
private:
int n; //用 n
int fib;
public:
void get();
void CalFib();
void Display()
{
cout < < "Fib= " < <fib < <endl;
}
};

inline void Fib::get()
{
int Fib_N;

cout < < "请输入数列的第n项! " < <endl;
cout < < "n= ";
cin> > Fib_N;

n=Fib_N; // n 赋值
fib=1;
}

void Fib::CalFib()
{
//int n=value; //这个语句就不需要了
if(n==0||n==1) fib=n;
else
{
int oneback=1,twoback=0,current;
for(int i=2;i <=n;i++)
{
current=oneback+twoback;
twoback=oneback;
oneback=current;
}
fib=current;
}
}
void main()
{
Fib myFib;
myFib.Fib::get();
myFib.CalFib();
myFib.Display();
}

结果当然不会有问题 ...

热点排行