C++嵌套if语句,基本货币交换
C++ nested if statments, basic currency exchange
我的if语句有一个简单的C++问题,程序将值作为初始if参数运行,而不是执行else-if。此外,我还尝试进行编码,以便如果函数的结果等于1,它将键入一个语法正确的语句。除了使用另一个if语句之外,还有更好的方法吗?
int main()
{
cout << "Please type out amount and currency type to convert to dollars.n";
double val1;
string currency;
double result = 0;
cin >> val1 >> currency;
if (currency == "yen" || "y")
{
result = val1/100;
if (result == 1) {
cout << "You have " << val1 << "yen which equals n"
<< result << ", dollar.";
}
else
cout << "You have " << val1 << "yen which equals n"
<< result << ", dollars.";
}
else if (currency == "euros" || "e")
{
result = val1*1.25;
if (result == 1) {
cout << "You have " << val1 << "euros which equals n"
<< result << ", dollar.";
}
else
cout << "You have " << val1 << "euros which equals n"
<< result << ", dollars.";
}
else if (currency == "pounds" || "p")
{
{
result = val1 *1.2;
if (result == 1) {
cout << "You have " << val1 << "pounds which equals n"
<< result << ", dollar.";
}
else
cout << "You have " << val1 << "pounds which equals n"
<< result << ", dollars.";
}
}
else
cout << "I didn't understand, please try again.n";
}
当您键入if (currency == "yen" || "y")
时,您可能希望它表示";如果currency
等于"yen"
或者如果它等于"y"
,则做某事;。
然而,这并不是if语句的实际作用。if语句
if (currency == "yen" || "y")
首先测试字符串currency
是否等于"yen"
,如果不等于,它自己计算"y"
并检查它是否等于true。
在这种情况下;y";将被截断为bool
,这意味着它将评估为true
(因为"y"
不等于0
(。因此,您的第一个if语句将始终求值为true!
若要解决此问题,请将if语句替换为if (currency == "yen" || currency == "y")
。
对于第二个问题,您可以使用条件运算符,其工作原理如下:
cout << "You have " << (val1 == 1 ? "thing" : "things") << endl;
在这种情况下,条件是(val1 == 1 ? "thing" : "things")
。它检查是否为val1 == 1
,如果为true
则返回"thing"
,否则返回"things"
。
相关文章:
- 我正在尝试使用 c++ 创建一个货币转换程序,我不知道如何继续
- C++嵌套if语句,基本货币交换
- shell排序中的交换和比较
- 排序时无法执行交换操作.我做的时候它会崩溃.为什么
- 通过交换元素使数组相同
- 如何使 std::sort 在 std::swap 和我的命名空间的模板化交换之间没有名称冲突?
- 交换运算符 + 重载会导致无限递归
- 为什么 std::reduce 需要交换性?
- 复制和交换习惯用法与移动操作之间的交互
- C++ - 没有自定义交换功能的移动分配运算符?
- 如何在数组中交换最小和最大的位置?
- 尽管一切看起来都很好,但值不会交换
- C++交换来自同一类成员的参数值,处理多个类
- 插入排序的最小交换
- C++在 2 个向量向量之间交换向量
- 转置矩阵:交换元素不会更改值
- 不正确的比较和交换计数器输出用于快速排序功能
- 交换函数不是在 C++ 中交换 2D 数组的元素
- std::vector move 而不是交换到空 vector 并释放存储
- 否,除了交换和移动具有互斥锁的类