2013-02-04 89 views
-1

我正试图编写一个程序来计算体积和添加到球形或矩形形状的鱼缸中的空调量。忽略第二条语句

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

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

这里是我的源代码:

#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; 
} 
+2

,您在学习什么书?更具体地说,是什么让你认为你的预期比较的作用是'if(Circle ='Y'或'y')'?您应该可以获得比现在更高质量的学习C++源代码 – PlasmaHH

回答

1

你的if语句,条件是完全错误的;没有一部分会做你认为它的作用:if (Circle = 'Y' or 'y')

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

你写什么本质上是这样的:

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

    } 
} 

和“Y”,字符,强制转换为布尔true,就像字符“N”,这样既if语句的条件评估为真。

1

更改if语句

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

比较==,而分配是=

3

在C++ =是赋值运算符。为了平等,请使用==。 也就是说,改变

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

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

而且

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

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

也可以考虑使用'toupper'或'tolower'来减少比较次数:if(toupper(Circle)=='N')'。 –