#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
不仅对于这个输入而且对于其他输入,我也没有得到答案。 我搜索了它但找不到任何东西。请解释并帮助我。
答案 0 :(得分:3)
您的withdraw
声明为整数类型。当您尝试从输入流中读取12.5
作为整数时,只有12
被视为匹配输入的一部分。只有12
被视为withdraw
。 .5 300
序列保留在输入缓冲区中。 amount
的下一次读取读取.5
。
因此,您的代码始终将withdraw
标记为12
,将amount
标记为0.5
。从未读过300
,从不参与任何事情,也从不影响任何事情。
第一个if
的真正分支始终被拍摄,只打印0.5
。