2017-02-28 63 views
-3

我是C++编程的新手,参加我的第一门课程。这应该是一个非常简单的程序,目标是让程序从输入流中读取一个数字并且不显示它。接下来,请用户尝试猜测数字;给他们三个猜测。各种输出应显示用户从未猜测正确,在第一次猜测,第二次猜测和第三次猜测时正确猜测。输出应该读的东西,如:在C++中创建一个猜谜游戏

I am thinking of a number between 1 and 10. 
Can you guess it within 3 guesses? 
Enter guess #1: 6 
Enter guess #2: 7 
Enter guess #3: 8 
You lose! The number was 5 

I am thinking of a number between 1 and 10. 
Can you guess it within 3 guesses? 
Enter guess #1: 66 
Please try again Enter guess #1: 67 
Please try again Enter guess #1: 68 
Please try again Enter guess #1: 6 
Enter guess #2: 7 Enter guess #3: 8 
You lose! The number was 5 

的问题,我有被猜测是否正确或错误,将连续印出你输了!这个数字是......或者如果猜测是正确的,它会做某件事。另外,如果猜测它在1和10之外,它会连续打印出来。请再次尝试以及丢失声明。这是我迄今为止的代码,我只创建了第一个猜测的代码,直到它正确执行。

任何意见将不胜感激。

#include <iostream> 
#include <cstdlib> 
#include <ctime> 
using namespace std; 
int main() { 
    int guess; 
    int guess2; 
    int guess3; 
    int ran; 
    srand(time(0)); 

    cout << "I am thinking of a number bewteen 1 and 10." << endl; 
    cout << "Can you guess it within 3 guesses?" << endl; 

    cin >> guess; 
    cin >> guess2; 
    cin >> guess3; 

    ran = ((rand() % 9) + 1); 

    cout << ran << endl; //remove*********** 

    cout << "Guess #1: " << guess << endl; 

    while(guess < 1 || guess > 10) { 
     cout << "Please try again" << endl; 

      } 
    while(guess != ran) { 
     cout << "You lose! The number was " << ran << endl; 
    } 

    while(guess == ran) { 
     cout << "You win! The number was " << ran << endl; 

    } 

    return 0; 
    } 
+0

'while(guess!= ran)'会一直持续到'guess == ran'。循环体中没有任何内容可以改变'guess'或'ran'。这就是我们所说的无限循环。你可能需要'if'而不是'while'。 – Chad

+0

谢谢,我更改为if语句并且它的效果更好,但是如果它能够在第一次猜测中正确猜测,然后停止在第二次以便进行正确猜测,并且如果它在1和10以外如何重新开始,我该如何停止猜测1? – sdfg

回答

0

,因为无论guess也不ran变化,打印"You lose!"的循环,循环不会终止。我不清楚为什么这是一个循环。

0

尝试使用for循环而不是3个猜测变量。另外,使用if而不是while。 int main(){

int guess, ran, i; 

srand(time(0)); 

cout << "I am thinking of a number bewteen 1 and 10." << endl; 
cout << "Can you guess it within 3 guesses?" << endl; 

ran = ((rand() % 9) + 1); 

cout << ran << endl; //remove*********** 

for(i=0;i<3;i++) 
{ 
cin >> guess; 
cout << "Guess #1: " << guess << endl; 

if(guess < 1 || guess > 10) 
    cout << "Please try again" << endl; 

if(guess == ran) 
    break; 

} 

if(guess != ran) 
    cout << "you lose!"; 
if(guess == ran) 
cout << "you win!"; 

return 0; 
}