我刚刚开始为学校学习C ++,但是在完成需要使用if / else语句的学校项目时遇到了麻烦。该项目需要如下代码: example of working code 我的代码如下:
#include <iostream>
using namespace std;
int ontime;
int zip;
int work;
int main()
{
cout << "Welcome to the DIG3873 System." << endl;
cout << "Did the student submit the exam on time (Y/N)? ";
cin >> ontime;
if (ontime == 'Y' || 'y') {
cout << "Did the student zip the file (Y/N)? ";
cin >> zip;
if (zip == 'Y' || 'y') {
cout << "Did the student's code work as requested (Y/N)? ";
cin >> work;
if (work == 'Y' || 'y') {
cout << "Congratulations, YOU PASS. "<< endl;
} else if (work == 'N' || 'n') {
cout << "YOU FAIL " << endl;
} else {
cout << "Please enter a valid response. " << endl;
}
} else if (zip == 'N' || 'n') {
cout << "YOU FAIL " << endl;
} else {
cout << "Please enter a valid response. " << endl;
}
} else if (ontime == 'N' || 'n') {
cout << "YOU FAIL " << endl;
} else {
cout << "Please enter a valid response. " << endl;
}
}
不幸的是,它没有按我希望的那样工作。当它运行时,它让我回答第一条语句,然后删除所有其他cout语句和一堆“ YOU FAIL”并结束程序。除了if / else语句外,我们还没有学到其他东西,因此我很茫然地看到人们建议使用循环的类似编码问题。对于这样的初学者问题很抱歉,不了解if / else语句,谢谢!
答案 0 :(得分:1)
表达式zip == 'Y' || 'y'
总是为true
。
那是因为唯一的比较是zip == 'Y'
。该表达式实际上是(zip == 'Y') || ('y')
。也就是说,您测试zip
是否等于'Y'
;或者,如果'y'
仅'y'
,则不进行比较或其他任何操作。而且由于'y'
不为零,所以是真的。
您需要将zip
与两个{em> 值分别比较:zip == 'Y' || zip == 'y'
。
同样适用于您的其他条件。
您还有另一个问题,那就是您实际上不是在阅读字符而是在读取整数。如果您有int
变量,并且正在使用格式化的输入运算符>>
,则输入将尝试将输入解析为整数。
要阅读个字符,您需要使用char
。