猜猜游戏 - 卡在循环中。

时间:2016-11-03 23:50:31

标签: c if-statement

我正在制作一个猜谜游戏程序。主要功能要求用户猜测一个数字,如果该数字不等于正确的猜测,则将其发送到另一个函数,该函数告诉用户该数字是太高还是太低。然后第二个函数要求用户进行另一次猜测,并将猜测发送回第一个函数。

我的代码被困在第二个函数中,似乎没有退出它。我不知道该改变什么。

#include <stdio.h>

int guess(int num);

int main(void)
{
    int units;  

    printf("How many legs on a wonderwump??\n");
    scanf_s("%d", &units);
    while (units != 56)
    {
        guess(units);
    }
    printf("Great guess!\n");
    return 0;
}

int guess(int num)
{

    if (num > 56)
    {
        printf("Too high of a guess! Try again!");
    }
    else // (num < 56)
    {
        printf("Too low of a guess! Try again!");
    }

return scanf_s("%d", &num);

}

3 个答案:

答案 0 :(得分:0)

每次调用第二个函数后,您需要重置units值,因为此时它永远不会被更改。

所以改变

while (units != 56) {
  guess(units);
}

while (units != 56) {
  units = guess(units);
}

答案 1 :(得分:0)

你的代码错了。将guess函数替换为:

int guess(int num)
{

    if (num > 56)
    {
        printf("Too high of a guess! Try again!");
        return 1;
    }
    else if (num < 56)
    {
        printf("Too low of a guess! Try again!");
        return 1;
    } else 
        return 0;
}

while (units != 56)
{
    guess(units);
}

应该是

while (1)
{
    if(guess(units) == 0)
       break;
}

答案 2 :(得分:0)

使用guess(units)传递变量值(复制值),您可以通过引用guess(&units)发送它:

#include <stdio.h>

void guess(int* num);

int main(void)
{
    int units;  

    printf("How many legs on a wonderwump??\n");
    scanf("%d", &units);
    while (units != 56)
    {
        guess(&units);
    }
    printf("Great guess!\n");
    return 0;
}

void guess(int* num)
{
    if (*num > 56)
        printf("Too high of a guess! Try again!\n");
    else // (num < 56)
        printf("Too low of a guess! Try again!\n");
    scanf("%d", num);
}