#include "stdafx.h"
#include <stdlib.h>
#include <conio.h>
#include<cctype>
#include<iostream>
#include <cstdlib>
#include <windows.h>
#include<iterator>
#include<fstream>
#include<string>
#include<vector>
#include<cctype>
#include"ctype.h"
#include <windows.h>
#include <stdio.h>
#include <time.h>
using namespace std;
class blank
{public:
  int money;
  int speed;
  void grow(int x,int y);
};
void blank::grow(int x,int y)
{
 x=int(x*(100+y)/100);
}
void main()
{blank visa;
visa.money=1000;
visa.speed=20;
int i=0;
while(i<10)
{
visa.grow(visa.money,visa.speed);
cout<<visa.money<<endl;
i++;
}
}
神奇的是。输出10个月的本息和为什么还是初始值1000?哪里错了?成员函数不是可以改变成员数据么?
我希望初始金币为1000,10个月每个月输出月利率为百分之20的本息和 求高手。

解决方案 »

  1.   

    请楼主注意,成员函数也是函数,你搞明白函数参数的实质就明白你原来的做法永远修改不了money的值。要想修改参数的值,则需要将参数的地址传给参数,例如:
    void blank::grow(int *x,int y)
    {
     *x=int((*x)*(100*y)/100);
    }在main中调用的时候,如下
    visa.grow(&(visa.money),visa.speed);原理楼主自己研究。
      

  2.   

    神奇的是。输出10个月的本息和为什么还是初始值1000?哪里错了?成员函数不是可以改变成员数据么?
    我希望初始金币为1000,10个月每个月输出月利率为百分之20的本息和 求高手。
    ===============
    你上面的函数grow等于什么都没有做啊。你改变的是形参,并不是成员变量。
      

  3.   

    改成这样吧:
    #include "stdafx.h"
    #include <stdlib.h>
    #include <conio.h>
    #include<cctype>
    #include<iostream>
    #include <cstdlib>
    #include <windows.h>
    #include<iterator>
    #include<fstream>
    #include<string>
    #include<vector>
    #include<cctype>
    #include"ctype.h"
    #include <windows.h>
    #include <stdio.h>
    #include <time.h>
    using namespace std;
    class blank
    {public:
      int money;
      int speed;
      void grow();
    };
    void blank::grow()
    {
     money=int(money*(100+speed)/100);
    }
    void main()
    {blank visa;
    visa.money=1000;
    visa.speed=20;
    int i=0;
    while(i<10)
    {
    visa.grow();
    cout<<visa.money<<endl;
    i++;
    }
    }