C++;If语句逻辑 我目前正在C++中上课,对于我们的一个作业来说,由于某种原因,我遇到了一些麻烦。p>

C++;If语句逻辑 我目前正在C++中上课,对于我们的一个作业来说,由于某种原因,我遇到了一些麻烦。p>,c++,if-statement,C++,If Statement,询问用户在商店中购买的总金额,然后 根据以下规则计算折扣: 如果他们花50美元,给他们10%的折扣 如果他们花75美元,折扣是15% 如果他们花100美元,折扣是25% 最后,如果他们花费250美元或更多,他们可以得到40%的折扣 显示他们购买的金额,减去折扣并显示结果 以下是我到目前为止编写的代码: #include <iostream> using namespace std; int main() { double amount,discount=0.0;

询问用户在商店中购买的总金额,然后 根据以下规则计算折扣:

  • 如果他们花50美元,给他们10%的折扣
  • 如果他们花75美元,折扣是15%
  • 如果他们花100美元,折扣是25%
  • 最后,如果他们花费250美元或更多,他们可以得到40%的折扣
  • 显示他们购买的金额,减去折扣并显示结果
以下是我到目前为止编写的代码:

#include <iostream>
using namespace std;

int main() {

    double amount,discount=0.0;
    cout<<"Enter the total amount of your purchase: $";
    cin>>amount;
    cout<<endl;

    if (amount<50)
        cout<<"You do not recieve a discount"<<endl;
    else if(amount<=50.0)
    {
        discount=0.1*amount;
        cout<<"Discount: $"<<discount<<endl;
        amount=amount*0.9;
        cout<<"Total Amount: $"<<amount<<endl;
        return 0;
    }
    else if(amount<=75.0)
    {
        discount=0.15*amount;
        cout<<"Discount: $"<<discount<<endl;
        amount=amount*0.85;
        cout<<"Total Amount: $"<<amount<<endl;
        return 0;
    }
    else if(amount<=100.0)
    {
        discount=0.25*amount;
        cout<<"Discount: $"<<discount<<endl;
        amount=amount*0.75;
        cout<<"Total Amount: $"<<amount<<endl;
        return 0;
    }
    else if(amount<=250.0)
    {
        discount=0.4*amount;
        cout<<"Discount: $"<<discount<<endl;
        amount=amount*0.6;
        cout<<"Total Amount: $"<<amount<<endl;
        return 0;
    }
    return 0;
}
#包括
使用名称空间std;
int main(){
双倍金额,折扣=0.0;
库塔蒙特;

cout让我们看看您的一个问题案例:

else if(amount<=50.0)
该表达式自然转换为以下C代码:

else if (50.00 <= amount && amount < 75.00)
intmain(){
双倍金额,折扣=0.0;
库塔蒙特;

cout您的条件集与问题陈述不匹配。当您请求
74
时,这将匹配
(amount
float
double
变量不应与
=
=
进行比较,您应该使用epsilon

对我来说,你的if-else条件应该如下所示

if (0 > amount)
{
   // ERROR
   return;
}
else if (50.0 > amount)
{
   // No discount
   return;
}
else if (75.0 > amount)
{
   // 10% discount
   return;
}
else if (100.0 > amount)
{
   // 15% discount
   return;
}
else if (250.0 > amount)
{
   // 25% discount
   return;
}
else
{
   // 40% discount
   return;
}

如果缩进代码,逻辑将更容易遵循。您需要反转逻辑。执行
If(amount>250){}else If(amount>100){}…else{}
。else是指最低折扣。你不需要在每一个else子句的末尾返回。除了@NeilKirk所说的之外,你为什么要重复所有输出代码?只需将这些内容放在末尾并取出返回结果…@NeilKirk我修复了它。我键入了错误的内容。100%与错误无关,100%不必要案例。从您的链接中引用:“永远不要使用
==
来比较两个浮点数。”。但是OP没有使用
==
来比较两个浮点数。是的,他没有使用
=
,但他使用的是
是。浮点数工作(或多或少)正如对
的预期。您的代码正确且良好,这是正确的。否决票严格基于以下内容:浮点和双变量不应与==,=进行比较,您应该使用epsilon。这显然是错误的。
if (amount < 50.00)
    cout<<"You do not receive a discount"<<endl;
else if (amount < 75.00)
    // etc...
int main() {

double amount,discount=0.0;
cout<<"Enter the total amount of your purchase: $";
cin>>amount;
cout<<endl;

if (amount<50)
cout<<"You do not recieve a discount"<<endl;
else if(amount>=250.0)//250 or more
{
    discount=0.4*amount;
    cout<<"Discount: $"<<discount<<endl;
    amount=amount*0.6;
    cout<<"Total Amount: $"<<amount<<endl;
    return 0;
}


else if(amount>=100.0)
{
    discount=0.25*amount;
    cout<<"Discount: $"<<discount<<endl;
    amount=amount*0.75;
    cout<<"Total Amount: $"<<amount<<endl;
    return 0;
}

else if(amount>=75.0)
{
    discount=0.15*amount;
    cout<<"Discount: $"<<discount<<endl;
    amount=amount*0.85;
    cout<<"Total Amount: $"<<amount<<endl;
    return 0;
}
else if(amount>=50.0)
{
    discount=0.1*amount;
    cout<<"Discount: $"<<discount<<endl;
    amount=amount*0.9;
    cout<<"Total Amount: $"<<amount<<endl;
    return 0;
}

return 0;
}
if (amount < 50) {
    // No Discount
}
else if (amount < 75) {
    // 10% Discount
}
else if (amount < 100) {
    // 15% Discount
}
else if (amount < 250) {
    // 25% Discount
}
else {
    // 40% Discount
}
if (0 > amount)
{
   // ERROR
   return;
}
else if (50.0 > amount)
{
   // No discount
   return;
}
else if (75.0 > amount)
{
   // 10% discount
   return;
}
else if (100.0 > amount)
{
   // 15% discount
   return;
}
else if (250.0 > amount)
{
   // 25% discount
   return;
}
else
{
   // 40% discount
   return;
}