错误输出的错误纠正

时间:2015-11-13 08:21:38

标签: c++ error-correction

我的程序请求两个变量:一个整数和一个浮点数。两者必须大于0且小于2000.但是测试45和0的输入它接受该值并显示0.00的输出,尽管条件需要(cash > 0) && (balance > 0)

#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int cash;
    float balance ;
    cin >> cash >> balance;
    if((cash%5==0) && (cash <= balance) && (cash > 0) && (balance > 0) && (cash <= 2000) && (balance <= 2000))
    {
        balance = (balance - cash) - 0.50;
        cout << fixed;
        cout.precision(2);
        cout << balance;
    }
    else if (cash%5 != 0)
    {
        cout << fixed;
        cout.precision(2);
        cout << balance;
    }
    else if (cash > balance)
    {
        cout << fixed;
        cout.precision(2);
        cout << balance;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:0)

表达式(cash <= balance)中的条件为false,因此它不会检查其他条件并跳转到else部分并且cash > balance已满足,因此它将在cash > balance部分内执行表达式。 例如

 int a=1,b=2,c=3;
 if((cout<<"first ") && ( a==2 ) && (cout<<" second\n"))
 {
    cout<<"condition true\n";
 }
 else
 {
    cout<<"condition false\n";
 }

此处first会打印,当a==2表达式出现时为false,因此会移至else部分。