没有得到正确的答案

时间:2018-01-06 20:02:18

标签: c++

#include<iostream>
#include<iomanip>
using namespace std;

int main()
{
    long withdraw;
    double amount;
    cin>>withdraw>>amount;
    if(withdraw>amount)
        cout<<amount;
    else if(withdraw<amount && withdraw%5==0)
    {
        amount=amount-(withdraw+0.5);  //0.5 for bank charges
        cout<<setprecision(2);
        cout<<amount;
    }
    else
        cout<<amount;
    return 0;
}
输入

withdraw: 12.5   
amount:   300

输出:

0.5

不仅对于这个输入而且对于其他输入,我也没有得到答案。 我搜索了它但找不到任何东西。请解释并帮助我。

1 个答案:

答案 0 :(得分:3)

您的withdraw声明为整数类型。当您尝试从输入流中读取12.5作为整数时,只有12被视为匹配输入的一部分。只有12被视为withdraw.5 300序列保留在输入缓冲区中。 amount的下一次读取读取.5

因此,您的代码始终将withdraw标记为12,将amount标记为0.5。从未读过300,从不参与任何事情,也从不影响任何事情。

第一个if的真正分支始终被拍摄,只打印0.5