对大小写变量进行While循环检查

时间:2018-10-25 02:46:55

标签: c++

我对编码和参加C ++编码的入门课程有些陌生。我的老师给了我一个作业,要求我编写一个while循环检查大小写变量。我觉得这很简单,我已经研究了一些有关该主题的帮助,但似乎还无法使它起作用。我已经给我的教练发了电子邮件,但是他没有回复,所以我在这里发帖希望有一些新的看法。

这是他提供的代码:

// PLACE YOUR NAME HERE

#include <iostream>
using namespace std;

int main()
{
    char doneYet = 'N'; // on the 2nd run comment this and uncomment the next line
//char doneYet = 'Y'; 

// Set this while loop to run as long as doneYet is ‘N’ or ‘n’
while() // Make sure to check for BOTH upper and lowercase!
    {
        cout << "Am I done yet? (Y/N)\n";
        cin >> doneYet;
    }

    system("pause");
    return 0;
}

他的请求是“在上面的程序中键入并运行它。在第一次运行后回答'y'。现在修改程序注释,以使doneYet为'y'并运行它。会发生什么?根据该实验,循环可以运行的最小次数是多少?”

到目前为止,我将其作为代码:

// PLACE YOUR NAME HERE

#include <iostream>
using namespace std;

int main()
{
    char doneYet = 'N'; // on the 2nd run comment this and uncomment the next line
//char doneYet = 'Y'; 

// Set this while loop to run as long as doneYet is ‘N’ or ‘n’
while( doneYet = 'N') // Make sure to check for BOTH upper and lowercase!
    {
        cout << "Am I done yet? (Y/N)\n";
        cin >> doneYet;
    }

    system("pause");
    return 0;
}

现在将提示用户输入。但是无论我输入的是n,N,y,Y还是任何其他数字或字母,它都会重复循环并再次询问。我相信,如果未输入y或Y,我的老师会要求该程序结束。 我敢肯定这只是一个简单的任务,但多一点输入将是很好的。 谢谢您的宝贵时间。

3 个答案:

答案 0 :(得分:0)

提示:研究“赋值”和“比较相等”运算符之间的区别。

答案 1 :(得分:0)

这是一个使用布尔值的样本,它有点干净。更重要的是,您的代码无法正常工作的原因仅仅是因为您无法摆脱循环!使用while循环时,您始终需要设置一个条件,当该条件满足时,您可以退出该循环。否则,您将被卡住!

#include <iostream>
using namespace std;

int main()
{
    char doneYet = 'N';
    bool not_done = true;

while(not_done) // While doneYet is 'N' or 'n'
    {
        cout << "Am I done yet? (Y/N)\n";
        cin >> doneYet;

        if(doneYet == 'y' || doneYet == 'Y')
            not_done = false;
    }
    return 0;
}

关于问题的第二部分(如果需要回答):

  

键入上面的程序并运行。第一次运行后回答“ y”。现在,修改程序注释,使doneYet为“ y”并运行它。怎么了?根据此实验,while循环可以运行的最小次数是多少?”

如果doneYet以'N'开头,而while循环看起来像while(doneYet == 'N'),那么您的while循环将至少运行 次。如果doneYet开头为'Y',并且循环看起来像while(doneYet == 'N'),则该循环根本不会运行!它将测试是否满足条件,但是该块(while循环中的内容)将不会执行。

答案 2 :(得分:0)

开始使用新语言时,请放心!

所以问题在于您使用的是赋值运算符,而不是比较运算符。

这里=正在将doneYet分配给'N'意味着doneYet变为{N}之前的值。您想要做的就是检查doneYet是否等于'N',您将为此使用==。如果您希望它检查'N'或'n',则需要使用OR运算符||在同一位置包含另一个检查。看起来应该像

while(doneYet == 'N' || doneYet == 'n')

这表示如果doneYet等于N或doneYet等于n执行下面的代码,否则跳过它。

如果您感兴趣为什么循环不断循环,因为您在每个循环的开始都将doneYet设置为N。在计算机上,像N这样的字符只是一个数字(我认为是78),根据计算机的说法,在检查是否要运行循环0时为假,其他所有情况都为真,因此它将永远永远为真。

以下代码

#include <iostream>
using namespace std;

int main()
{
    char doneYet = 'N';

    while(doneYet == 'N' || doneYet == 'n') // While doneYet is 'N' or 'n'
    {
        cout << "Am I done yet? (Y/N)\n";
        cin >> doneYet;
    }

    return 0;
}