学校项目的if / else陈述

时间:2018-09-13 16:42:58

标签: c++ if-statement

我刚刚开始为学校学习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语句,谢谢!

1 个答案:

答案 0 :(得分:1)

表达式zip == 'Y' || 'y' 总是true

那是因为唯一的比较是zip == 'Y'。该表达式实际上是(zip == 'Y') || ('y')。也就是说,您测试zip是否等于'Y';或者,如果'y''y',则不进行比较或其他任何操作。而且由于'y'不为零,所以是真的。

您需要将zip与两个{em> 值分别比较:zip == 'Y' || zip == 'y'

同样适用于您的其他条件。


您还有另一个问题,那就是您实际上不是在阅读字符而是在读取整数。如果您有int变量,并且正在使用格式化的输入运算符>>,则输入将尝试将输入解析为整数。

要阅读个字符,您需要使用char