回 帖 发 新 帖 刷新版面

主题:找不出为什么不能得出正确的输出,望哪位大虾指导一下.

#include <iostream>
using namespace std;

int main(){
    int year,i,j=1;
    float rate;
    int currentyr[100],nextyr[100];
    cout<<"请输入繁殖率: ";
    cin>>rate;
    cout<<"请输入当前数目: ";
    cin>>currentyr[0];
    cout<<"请输入统计年数: ";
    cin>>year;
    for (i=0;i<year;i++)
    {
        nextyr[j]=(1-(currentyr[i]/1000000))*rate*currentyr[i];
        currentyr[i+1]=nextyr[j];
        j++;
    }

    for (i=0;i<year;i++)
    {
        cout<<"第"<<i+1<<"年朱喙蜡翅鸟的数目为: "<<currentyr[i]<<endl;
    }
    
    return 0;
}

题目提供的公式是:                         CurrentYr
                NextYr=Rate*CurrentYr(1- -----------)
                                           1000000

变量Rate代表繁殖率,取值在1--4之间,变量CurrentYr为目前的总数,变量NextYr是下一年的预计总数. 下年度的NextYr作为第三年度的CurrentYr.

测试数据如下:

若rate取值: 2.6
  当前数目为: 100000
  统计年数为:25

按照正常计算,第二年的数目应该为:234000

可是程序执行后第二年会显示为:259999, 不明白为什么,希望哪位同学帮我看看.

回复列表 (共2个回复)

沙发



        其实很简单把:int currentyr[100],nextyr[100];

        该成:float currentyr[100],nextyr[100];

        就可以了


           问题出在这:      nextyr[j]=(1-(currentyr[i]/1000000))*rate*currentyr[i];

板凳



一眼就看出问题所在了

我来回复

您尚未登录,请登录后再回复。点此登录或注册