老师,我在做c++编程时候下面这个始终无法成功构建,系统显示是第7行有问题,可我看不出问题在哪里,求解答,谢谢!

#include <iostream>

using namespace std;

int main()

{

    int i;

    int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

    bonus1=i*100000*0.1;

    bonus2=bonus1+(i-100000)*0.075;

    bonus4=bonus2+(i-200000)*0.05;

    bonus6=bonus4+(i-400000)*0.03;

    bonus10=bonus6+(i-600000)*0.015;

    if(i<=100000)

    bonus=bonus1=i*100000*0.1;

    else if (i<=200000)

    bonus=bonus1+(i-100000)*0.075;

    else if (i<=400000)

    bonus=bonus2+(i-200000)*0.05;

    else if  (i<=600000)

    bonus=bonus4+(i-400000)*0.03;

    else if (i<=1000000)

    bonus=bonus6+(i-600000)*0.015;

    else

    bonus=bonus10+(i-1000000)*0.01;

    cout<<bonus<<endl;

    return 0;

  }


梧落
浏览 1619回答 3
3回答

onemoo

你把bonus都声明成了int型,当然不会输出浮点数。将它们的类型改成double试试。

梧落

#include <iostream>#include <iomanip>using namespace std;int main(){    int i;    int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;    cin>>i;    cout <<setprecision(6);    cout <<fixed;    bonus1=10*0.1;    bonus2=bonus1+10*0.075;    bonus4=bonus2+20*0.05;    bonus6=bonus4+20*0.03;    bonus10=bonus6+40*0.015;    if(i<=10)    bonus=i*0.1;    else if (i<=20)    bonus=bonus1+(i-10)*0.075;    else if (i<=40)    bonus=bonus2+(i-20)*0.05;    else if  (i<=60)    bonus=bonus4+(i-40)*0.03;    else if (i<=100)    bonus=bonus6+(i-60)*0.015;    else    bonus=bonus10+(i-100)*0.01;    cout <<bonus<<endl;    return 0;  }这个是我改正过的,题目给出的输入为35时输出应该为2.500000,但我在构建后运行时,得到的结果是1,这是肿么回事啊?

康振宁

你给i赋个初始值
打开App,查看更多内容
随时随地看视频慕课网APP