C++ 仅执行第一个IF语句的程序

C++ 仅执行第一个IF语句的程序,c++,if-statement,C++,If Statement,我目前遇到一个问题,我的程序将只执行第一个 if语句,其中将“w”乘以3.5,即使“w”不符合要求。如果我输入4,输出变成14(4*3.5),因为重量在3到10磅之间,所以应该是34(4*8.5)。我确信修复很简单,但我似乎找不到它 #include <iostream> using namespace std; int main() { float w, price; cout << "Enter weight of package : "; cin >>

我目前遇到一个问题,我的程序将只执行第一个 if语句,其中将“w”乘以3.5,即使“w”不符合要求。如果我输入4,输出变成14(4*3.5),因为重量在3到10磅之间,所以应该是34(4*8.5)。我确信修复很简单,但我似乎找不到它

#include <iostream>
using namespace std;

int main()
{
float w, price;
cout << "Enter weight of package : ";
cin >> w;

if (0 < w <= 1)
{
    price = 3.5 * w;
}
else if (1 < w <= 3)
{
    price = 5.5 * w;
}
else if (3 < w <= 10)
{
    price = 8.5 * w;
}
else if (10 < w <= 20)
{
    price = 10.5 * w;
}
else if (20 < w <= 30)
{
    price = 12.5 * w;
}
else if (30 < w)
{
    cout << "The package cannot be shipped" << endl;
}
else
    cout << "Invalid input" << endl;
cout << "Weight : " << w << " lbs" << endl;
cout << "Shipping cost : $" << price << endl;
}
#包括
使用名称空间std;
int main()
{
浮动w,价格;
cout>w;

if(0if(3您可能打算使用:

if (0 < w && w <= 1)
这简化为:

if (1 <= 1)

如果(1
a
没有产生您期望的效果,它实际上会计算为
(a
,其中
a
将有一个真/假值。我建议您按照以下方式重写代码:

if ((0 < 4) <= 1)
if (w <= 0)
{
    cout << "Invalid input" << endl;
}
else if (w <= 1)
{
    price = 3.5 * w;
}
else if (w <= 3)
{
    price = 5.5 * w;
}
else if (w <= 10)
{
    price = 8.5 * w;
}
else if (w <= 20)
{
    price = 10.5 * w;
}
else if (w <= 30)
{
    price = 12.5 * w;
}
else
{
    cout << "The package cannot be shipped" << endl;
}

cout << "Weight : " << w << " lbs" << endl;

if(啊,我明白了!我完全忘记了使用“&&”,以及我的方法将如何出错,正如您所解释的。非常感谢您
if (w <= 0)
{
    cout << "Invalid input" << endl;
}
else if (w <= 1)
{
    price = 3.5 * w;
}
else if (w <= 3)
{
    price = 5.5 * w;
}
else if (w <= 10)
{
    price = 8.5 * w;
}
else if (w <= 20)
{
    price = 10.5 * w;
}
else if (w <= 30)
{
    price = 12.5 * w;
}
else
{
    cout << "The package cannot be shipped" << endl;
}

cout << "Weight : " << w << " lbs" << endl;