我应该让用户输入他们的购买价格来查找运费。我遇到的问题是,如果我输入任何高于1,000美元的价值,运费价值将始终为8美元。
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
void main()
{
double saleAmount, shipping = 0;
cout << "Enter a purchase amount to find out your shipping charges." << endl;
cout << "Please enter the amount of your purchase: $" << endl; cin >> saleAmount;
if (saleAmount > 5,000.00)
{
shipping = 20.00;
}
else if (saleAmount > 1,000.00)
{
shipping = 15.00;
}
这是它无法识别10.00美元以上的运费。如果我在控制台应用程序上输入1,500,它将始终告诉我运费是10美元。同样适用于5000美元以上的任何价值。我试图看看问题是什么,但我找不到它的生命。
else if (saleAmount > 500.00)
{
shipping = 10.00;
}
else if (saleAmount > 250.00)
{
shipping = 8.00;
}
else
{
shipping = 0.00;
}
if (shipping == 0.00)
{
cout << "Error incorrect input" << endl;
}
else
{
cout << "The shipping charge on a purchase of $ " << saleAmount << " is $" << shipping << endl;
}
}
答案 0 :(得分:2)
声明
if (saleAmount > 5,000.00)
相当于:
if ( (saleAmount > 5) , 000.00)
评估为
if ( 0.000 )
因此,if
语句下的代码块永远不会被执行。
正如评论中指出的那样,从数字中删除,
。使用:
if (saleAmount > 5000.00)
答案 1 :(得分:2)
此代码中最严重的问题是:
if (saleAmount > 5,000.00)
else if (saleAmount > 1,000.00)
当我使用GCC编译程序并打开所有警告时,这些行会产生以下消息:
warning: left operand of comma operator has no effect
你明白现在的问题是什么吗?
答案 2 :(得分:2)
从5,000和1,000中移除它应该可以工作。
if (saleAmount > 5000.00)
else if (saleAmount > 1000.00)