我在编写经典的“猜数字”程序。
我不明白为什么即使我在循环中输入了“Success”,while循环仍然没有停止,并且继续执行默认路径。
int xRan;void rdm(int to, int from){ srand(time(NULL)); xRan = rand()%to+from;}void iGuess(){ string b; int tries = 1; cout << "请想一个1到100之间的数字" << endl; rdm(100, 1); while(b != "Success" || b != "success"){ cout << "你的数字是高于还是低于 " << xRan << "?(尝试次数 #" << tries << ")" << endl; cout << "如果我猜中了你的数字,请输入'Success' " << endl; cout << "-->"; cin >> b; if(b == "Lower" || b == "lower"){ rdm(xRan, 1); tries++; }else if(b == "Higher" || b == "higher"){ rdm(100, xRan); tries++; }else{ cout << "这不是一个有效的选择。" << endl; } } cout << "我太棒了!我用了 " << tries << "次尝试就猜到了!" << endl;}
回答:
你永远不会退出你的for循环,因为你在检查它是否是“Success”或“success”。这两个条件中只要有一个为真就会进入循环。所以无论你输入的是大写还是小写,其中一个条件总是为真。相反,你应该写成
while(b != "Success" && b != "success")