陈俊杰cjj 发表于 2021-3-31 21:08:08

c++作业,还没学完,有没有大佬告诉我为什么会错

题目是公司用户数在2012年十月是10亿,如果以百分之2、3、4增长的话,用户何时才能达到25亿
代码能够运行的是这样的
#include <iostream>
using namespace std;
int month_X(double rate);
double num2012 = 10e8; double num2013 = 2.5e9;
int main()
{
        double rate;
        cin >> rate;
        if (100 * rate == 2)
        {
                int t;
                t = month_X(rate) - 2;
                cout << (2013 + t / 12) << "年" << t % 12 << "月";
        }
        else if (100 * rate == 3)
        {
                int t;
                t = month_X(rate) - 2;
                cout << (2013 + t / 12) << "年" << t % 12 << "月";
        }
        else if (100 * rate == 4)
        {
                int t;
                t = month_X(rate) - 2;
                cout << (2013 + t / 12) << "年" << t % 12 << "月";
        }
        else;
        return 0;
}
int month_X(double rate)
{
        int month;
        for (month = 0; num2012 < num2013; month++)
        {
                num2012 = num2012 * (1 + rate);
        }
        return month;
}

但如果把if语句里面的变量t不要了,整个if就一句这个
cout << (2013 + (month_X(rate) - 2)/ 12) << "年" << (month_X(rate) - 2) % 12 << "月";
结果就会很奇怪

求助大佬!!!

yuxijian2020 发表于 2021-4-1 11:23:32

//因为你的这句话
double num2012 = 10e8; double num2013 = 2.5e9;

陈俊杰cjj 发表于 2021-4-7 22:09:26

yuxijian2020 发表于 2021-4-1 11:23


为什么呢?求指点{:10_266:}

yuxijian2020 发表于 2021-4-8 10:59:39

//这里你定义的是全局变量
double num2012 = 10e8; double num2013 = 2.5e9;
//这里年的时候计算了一次上面2个全局变量的值已经改变了,然后月的时候又计算了一次,这时你的初始值已经不是原来的值了
cout << (2013 + (month_X(rate) - 2)/ 12) << "年" << (month_X(rate) - 2) % 12 << "月";

陈俊杰cjj 发表于 2021-4-10 15:54:27

yuxijian2020 发表于 2021-4-8 10:59


懂了懂了,谢谢老哥{:10_284:}
页: [1]
查看完整版本: c++作业,还没学完,有没有大佬告诉我为什么会错