我正在尝试创建一个程序,程序会猜到用户想到的是什么类型的数字。首先,它会询问用户最小和最大数量,例如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;
}
答案 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');