数字猜测用户的想法C

时间:2016-10-18 09:49:47

标签: c

我正在尝试创建一个程序,程序会猜到用户想到的是什么类型的数字。首先,它会询问用户最小和最大数量,例如1和10(我想到的数字应该在1到10之间)。
让我说我记住了数字4,程序将输出一个数字。我可以键入L表示低,H表示高,G表示良好 如果我输入L,程序应该生成一个低于猜测数字的数字,对于H,它应该猜出一个更高的数字。如果我输入G,程序应该停止并打印出它猜到的次数 我在下面添加了我的代码,我缺少什么?

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

int main() {
    int minNumber;
    int maxNumber;

    int counter;

    printf("Give min and max: ");
    scanf("%d %d", &minNumber, &maxNumber);

    //printf("%d %d", minNumber, maxNumber);

    int num_between_x_and_y = (rand() % (maxNumber - minNumber)) + minNumber;

    char input[100];
    do {
        printf("is it %d? ", num_between_x_and_y);
        scanf("%s", input);
        if (input == 'L') {
            counter++;
        }
        if (input == 'H') {
            counter++;
        }
    } while (input != 'G');

    printf("I guessed it in %d times!", counter);
    return 0;
}

2 个答案:

答案 0 :(得分:0)

您无法使用==来比较字符串(多个字节)。

要么if (input[0] == 'L')只是将用户输入的第一个字母与文字值进行比较,要么if (strcmp(input,"L") == 0)将用户输入的所有内容与1个字符的字符串文字进行比较(使用strcmp您需要添加#include <string.h>

此外,您的代码缺少其他内容,例如计数器应设置为在使用之前设置为零。我假设你还没有完成你的代码,因为你无法让用户输入部分工作。

答案 1 :(得分:0)

我没有看到任何“计数器”变量初始化

int counter = 1;

我没有在循环中看到新的随机数再生,它应该是这样的:

 do {
        printf("is it %d? ", num_between_x_and_y);
        scanf("%s", input);
        if (input[0] == 'L') {
            counter++;
            maxNumber = num_between_x_and_y;

        }
        if (input[0] == 'H') {
            counter++;
            minNumber = num_between_x_and_y;
        }
        num_between_x_and_y = (rand() % (maxNumber - minNumber)) + minNumber;
    } while (input[0] != 'G');