【问题标题】:C: Number Guessing GameC:猜数字游戏
【发布时间】:2015-11-14 08:46:03
【问题描述】:

如何定义我希望用户在猜数字游戏中猜的数字?

我需要遵循程序的两个示例运行,粗体字是用户的输入:

  1. 好的,我在想一个数字。试着猜一下。
    你的猜测? 50
    太高了!
    你的猜测? 12
    太低! 你的猜测? 112
    非法猜测。您的猜测必须在 1 到 100 之间。
    再试一次。你的猜测? - 20
    非法猜测。您的猜测必须在 1 到 100 之间。
    再试一次。你的猜测? 23

    ***正确*****

  2. 想再玩一次吗?

    好的,我在想一个数字。尝试猜测它。
    你的猜测? 85
    太高了!
    你猜? 12
    太低了!
    你猜? 57

    ***正确*****

当我/用户在第一次运行中输入数字 23 时,我无法让我的脚本输出 ***CORRECT*****。当我输入 50、12、112 和 -20 时,我得到正确的响应,但不是 23。输入 23 后,我得到“太低了!你的猜测?” (我还没有尝试过第二次运行,因为我需要确保我可以进行第一次运行以遵循示例。)

这是我所拥有的sn-p:

void guessGame() 
{
int num = 23;
int guess = 0;
int count = 1;
count = 1;

srand((unsigned int)time(NULL));
num = rand() % 100 +1;

printf("OK, I am thinking of a number. Try to guess it.\n");
printf("Your guess?\n");
scanf("%d",&guess);

while(guess != num && count != 6)
{
    if(guess > 100 || guess < 1)
    {
        printf("Illegal guess. Your guess must be between 1 and 100.\n");
        printf("Try again. Your guess?\n");
        scanf("%d", &guess);
        count ++;
    }
    else if(guess > num)
    {
        printf("Too high! Your guess?\n");
        scanf("%d", &guess);
        count ++;
    }
    else if(guess < num)
    {
        printf("Too low! Your guess?\n");
        scanf("%d", &guess);
        count ++;
    }
}
if (guess == num)
{
    printf("***CORRECT*****\n");
}
else 
    printf("Too many guesses\n");

printf("The number is %d\n\n", num);
}

非常感谢您的帮助。 :)

【问题讨论】:

  • 要猜的数字num是随机的;不要期望从样本中重现确切的数字。
  • num = rand() % 100 +1; 将值从 23 更改为其他值。
  • 你设置 num = 23 然后给 num 分配一个随机值吗?那么你的脚本会做它应该做的事情,并且 23 低于实际的随机数
  • 如果用户在正确的范围内猜测,我可以使用 num 输出“正确”吗?例如,在第一次运行中,范围可能是 13-49。或者,它是严格随机的吗?
  • 它将在1 to 100范围内,因为您使用的是%100 + 1

标签: c random srand


【解决方案1】:

在您的函数中,您将 num 初始化为 -

int num = 23;

但是你让它存储任何随机生成的数字 -

srand((unsigned int)time(NULL));
num = rand() % 100 +1;

可能不是23,它可以是1 to 100之间的任何东西。因此,它显示了非预期的输出。

如果您希望 num 成为 23 则删除带有 rand() 的 then 语句。

【讨论】:

  • @Haris 编辑了那个。谢谢!!
  • 谢谢!我担心我必须删除 srand,因为任务需要我实现 srand/rand()。我想我应该只使用其中一个,而不是两者都使用......
  • @Anonymissy 这取决于你。如果您想要随机数,请使用rand(),否则请手动为其分配一些值。
【解决方案2】:

试试这个

#include <stdlib.h>
srand(time(NULL));
rand();
int random_number = rand() % 100 + 1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2014-11-25
    • 2016-06-21
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多