【问题标题】:Ignoring second if statement忽略第二个 if 语句
【发布时间】:2013-02-04 16:48:32
【问题描述】:

我正在尝试编写一个程序来计算要添加到球形或矩形鱼缸中的调节剂的体积和数量。

我希望它询问用户坦克是否是圆形的,他们会回答“y”、“Y”或“n”、“N”。但是,每当我运行程序并输入 n 或 N 时,它仍然会运行 y 或 Y 的 if 语句。

请注意,我对这一切都很陌生。这是对编程和逻辑类的介绍。

这是我的源代码:

#include <iostream>

using namespace std;

int main()
{
char Circle = ' ';
int RADIUS = 0;
int HEIcircle = 0;
int LEN = 0;
int WID = 0;
int HEI = 0;
double AMTcondCIR;
double AMTcondREC;
cout << "Is tank circular? ";
cin >> Circle;

if (Circle = 'Y' or 'y')
{

cout << "Enter radius: ";
cin >> RADIUS;
cout << "Enter height: ";
cin >> HEIcircle;
AMTcondCIR = ((4/3) * 3.14 * (RADIUS^3)) * 0.01;
cout << "Amount of Conditioner to add (in mL): " << AMTcondCIR << endl;
}
if (Circle = 'N' or 'n')
{

cout << "Enter length: ";
cin >> LEN;
cout << "Enter width: ";
cin >> WID;
cout << "Enter height: ";
cin >> HEI;
AMTcondREC = (LEN * WID * HEI) * 0.01;
cout << "Amount of Conditioner to add (in mL): " << AMTcondREC << endl;
}
system("pause");
return 0;
}

【问题讨论】:

  • 你在学习什么书?更具体地说,是什么让您认为您的预期比较是if (Circle = 'Y' or 'y')?您可能应该获得比现在更高质量的 C++ 学习资源

标签: c++ if-statement dev-c++


【解决方案1】:

在 C++ 中,= 是赋值运算符。对于平等,请使用==。 也就是改变

if (Circle = 'Y' or 'y')

进入

if (Circle == 'Y' || Circle == 'y')

if (Circle = 'N' or 'n')

进入

if (Circle == 'N' || Circle == 'n')

【讨论】:

  • 还可以考虑使用touppertolower 来减少比较次数:if (toupper(Circle) == 'N')
【解决方案2】:

你的if语句条件完全错误;这其中的任何部分都没有你认为的那样:if (Circle = 'Y' or 'y').

您正在寻找if (Circle == 'Y' || Circle == 'y')。由于几个原因,您所写的内容是错误的;它使用赋值运算符(= 而不是 ==),而二进制的另一半 or 始终为真。

你写的基本上是这样的:

if ('Y') {
  if ('y') {

  }
}

并且字符“Y”转换为布尔值true,就像字符“N”一样,因此if 语句的两个条件都评估为真。

【讨论】:

    【解决方案3】:

    将您的 if 语句更改为

    if (Circle == 'Y' || Circle == 'y')
    ...
    if (Circle == 'N' || Circle == 'n')
    

    比较是==,而赋值是=

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 2020-10-28
      • 2015-08-13
      相关资源
      最近更新 更多