C号猜数字游戏

时间:2014-09-30 09:22:54

标签: c

我刚刚开始学习C编程和练习,我找到了这个任务。这是一个数字猜谜游戏,计算机猜测我想到的数字。首先,我必须考虑一个数字。然后我必须在数字范围内扫描。然后计算机生成该范围内的数字并询问我是否正确。根据计算机的答案,我必须回答L,如果它太低,H如果它太高,G如果它是正确的。如果它是正确的,它会打印出来并尝试次数。如果输入任何其他字符,则表明我输错了答案。

这是我到目前为止所得到的。它没有给我任何错误,但当我输入L,H或G时,它打印出我输错了答案。

提前感谢您的帮助。

#include<stdio.h>
#include<stdlib.h>


void main(){

    int randomNo = 0;
    int input = 0;
    int counter = 0;
    int min = 0;
    int max = 0;
    char answer = ' ';
    char low = 'L';
    char high = 'H';
    char good = 'G';


    printf("Enter min and max: ");
    scanf_s("%d %d", &min, &max);       

    do{     
        randomNo = min + rand() % (max - min) + 1;
        printf("Is it %d?\n", randomNo);
        printf("Enter your answer:");
        scanf_s("%s", &answer);

        if (answer == low){
            printf("Number guessed is low\n");
            min = randomNo;
            counter++;
        }
        else if (answer == high){
            printf("Number guessed is high\n");
            max = randomNo;
            counter++;
        }
        else{
            printf("You entered the wrong answer!\nYour answer should be L - too low H - too high G - goed\n");
        }
    } while (answer != good);

    printf("Your answer is correct!\nYou guessed it in %d times!\n", counter);

}

3 个答案:

答案 0 :(得分:1)

scanf_s("%s", &answer);

应该是:

scanf_s("%c", &answer); /* answer is a char (not a string) */

另一方面:

  

使用相同种子的两个不同初始化将生成   随后对兰德的调用也会产生相同的结果。

     

如果seed设置为1,则将生成器重新初始化为其初始值   value并产生与调用rand或之前相同的值   函数srand。

     

为了生成类似随机数的数字,srand通常被初始化   一些独特的运行时值,如函数返回的值   时间(在标题中声明)。这对大多数人来说足够独特   琐碎的随机化需求。

在开头添加srand(time(NULL));

答案 1 :(得分:0)

您的scanf_s是&#34;扫描&#34;对于字符串(%s),而不是char%c)。

使用scanf_s("%c", &answer)! :)

答案 2 :(得分:0)

而不是

scanf_s("%s", &answer);

使用:

scanf_s(" %c", &answer);

由于answer不是字符串,而是字符。

您还需要将else更改为else if(answer != 'G')else if(answer != good)rand也会生成相同的值。为了生成随机值,您需要

srand(time(NULL));

main的开头。这是pseudo-random number generator