**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答案。
这个问题是由一个打字错误或一个无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
17小时前就关门了。
Improve this question
这是我需要用C++ The question/problem编码的问题
我似乎不能知道我的代码的问题。
代码如下:
#include <iostream>
using namespace std;
int main(void)
{
cout << "Total Purchase Cost: Php ";
double total;
cin >> total;
cout << "Loyalty Card Type: ";
int cardType;
cin >> cardType;
double discount = 0;
double type1 = 0.10;
double type2 = 0;
double type3 = 0.15;
if (cardType == 1)
discount = total * type1;
if (cardType == 2)
discount = total * type2;
if (cardType == 3)
discount = total * type3;
else
cout << "Invalid Card";
cout << "Discounted Cost: Php \n" << discount;
return 0;
}
当我尝试运行它时,折扣价格是正确的,计算也是正确的,输出文本“Discounted Cost:Php ---”看起来工作得很完美。但是当我开始添加一个else语句,这样当我在if语句中输入一个无效的数字时,它会输出一个“Invalid Card”消息。但是当我输入一个有效的数字时,else语句仍然会打印出来,即使它不应该打印出来。
1条答案
按热度按时间qltillow1#
为了解决当前的问题,我建议您将除第一条之外的所有
if
语句替换为else if
:但是,上面的逻辑仍然存在问题,即行
即使卡片是无效的,也会被打印出来,这可能是您不希望看到的。因此,最好添加一个变量
bool valid
,并且只在该变量为true
时打印"Discounted Cost"
:除了使用
if
...else if
语句链,还可以使用switch
语句:这个逻辑可以通过使用一个指针来简化一点,该指针可以被设置为
nullptr
以指示该卡是无效的。然而,编写整个程序的更简单的方法是:
你的代码中的另一个问题(也是我上面的代码中的问题)是你似乎在计算折扣,但是你却把这个值打印出来作为“折扣成本”。这是不正确的。正确的数学公式是:
要解决此问题,请将行
应改为: