2016-12-02 160 views
-5

我正在制作一个简单的随机数猜猜游戏(下面的例子),它可以很好地工作,直到你的猜测高于数字。当它发生时,它会打印:“我的号码低于我的号码高于”当它只是应该打印时“我的号码低于此值”。此外,当你猜正确答案,它打印“我的号码是高于”为什么我的代码不工作?

我的代码是:

#include <iostream> 
#include <unistd.h> 
#include <cstdlib> 

int main() { 
    int highnum; 
    int guess; 
    srand(time(0)); 
    std::cout << "Pick a number greater than 2"; 
    std::cin >> highnum; 
    int randynumeber = (rand() % highnum) + 1; 
    std::cout << "I have picked a random number between 1 and " << highnum << " which you need to try and guess"; 
    int guesses = 0; 
    int stop = 0; 

    while (guess != randynumeber) 
     { 
      if (stop == 0) 
       { 
        sleep(0.1); 
        stop = 1; 
        std::cout << std::endl << "Guess a number"; 
        std::cin >> guess; 
        if(guess>randynumeber) 
         std::cout << "My number is lower than that"; 
        else if(guess<randynumeber) 
         std::cout << "My number is higher than that"; 
        stop = 0; 
       }  
     } 
    std::cout << std::endl << "guesses = " << guesses; 
    std::cout << "You win!"; 
} 
+0

请在您的问题中发布代码。 – RedX

+0

请勿发布代码链接。链接死亡。 – csmckelvey

+0

'std :: cout <<“我的编号比那个更高”;'将始终打印,因为它没有任何条件(注意';'&'else'应该是'else if'还是简单地'else'没有args)。另外,你期望'停止'做什么?而你并没有增加猜测。 – George

回答

0

你是不是在else语句测试条件。你需要测试它,否则它只是执行(guess < randynumeber); - 它给出了一个逻辑答案,然后执行下一段代码,这是下一个cout语句。

+0

我刚刚改变了一下我的代码,但我没有明白你在说什么,我该如何测试它? – MrSam123

+0

问题中的代码与您发布此答案时看到的代码不同吗?我只是从离线链接复制它。 – Barmar

+0

是的,它看起来好像已经改变了 - 上面的答案也指的是对其他条件的缺失测试 – adrianmcmenamin