C ++ do-while循环

时间:2017-11-25 17:40:08

标签: c++ loops operators do-while

家伙! 我正在编写一个用C ++编写的程序来演示' do-while'环。只要不是“再见”,该程序就会简单地回应用户输入的内容。' 因此,如果用户输入“嘿嘿”,该计划回应了嘿嘿'如果用户输入'再见'#39;程序停止了。这是代码:

#include "stdafx.h"
#include <iostream>
#include <string>

using namespace std;

int main()
{ 
string wordString;

do
{
    cout << "\nEnter a word: ";
    getline(cin, wordString);
    cout << "\nYou entered: " << wordString<<"\n";
} while ((wordString!="goodbye")||(wordString!="Goodbye"));

return 0;
} 

我想要做的是当用户输入“再见”字样时停止程序。或者&#39;再见。&#39;所以我添加了||检查,但它没有工作和 循环语句只是继续执行。 但是当我把&amp;&amp;而不是||它工作正常,程序停止,只要“再见”#39;或者&#39;再见&#39;进入了。

所以我的问题是:为什么&amp;&amp;工作和||没有按&#39;吨?

2 个答案:

答案 0 :(得分:0)

使用|| deosnot停止progam,因为它是OR运算符,这意味着当语句中的任何一个为真时它将为真,所以如果任何一个是真的那么它将在另一方面执行AND(&amp;&amp;)运算符它意味着两者都是声明必须是真的才能执行。

答案 1 :(得分:0)

你必须使用logical and &&而不是or ||,因为如果只有wordstring不等于ro&#34;再见&#34;你想要打破循环并且不等于&#34; GOODBYE&#34;:

while( wordString != "goodbye") && (wordString != "Goodbye");

或者您可以这样使用OR ||

while(wordString == "goodbye" || wordString == "Goodbye");

正如您所看到的那样,如果wordString包含“和/再见”#34;或&#34; GOODBYE&#34;然后休息。如果其中一个操作数是非zeror,则逻辑OR返回true;如果两个操作数都为零,则返回false。逻辑AND&#34;&amp;&amp;&#34;如果仅,则返回true,如果两个操作数不为零,则返回flase(0)。

如果用户输入&#34; Goodbye&#34 ;;我能看到的内容在Capital中的第一个角色或任何小写和大写字母的混合,那么你的程序将看起来很荒谬;因为它不会破裂。

解决方法是您可以将输入文本转换为所有大写或小写字母,然后只检查一个值:

std::string wordString = "GoodBye";
for(int i(0); i < wordString.length(); i++)
    wordString[i] = to_upper(wordString[i]);

// wordString = "GOODBYE"

 // ....
 while(wordString != "GOODBYE");