我对编码和参加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,我的老师会要求该程序结束。 我敢肯定这只是一个简单的任务,但多一点输入将是很好的。 谢谢您的宝贵时间。
答案 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;
}