Я пытался выйти за рамки простого угадывания случайных чисел. По сути, программа должна быть сделана так, чтобы она выглядела так:
insert a number : 70
bigger than 0 smaller than 70.
insert a number : 35
bigger than 35 smaller than 70.
insert a number : 55
bigger than 55 smaller than 70.
insert a number : 60
bigger than 55 smaller than 60.
insert a number : 57
You got it right on your 5th try!
У меня были некоторые проблемы, но уже благодаря блестящим людям в stackoverflow, я могу получить все результаты, которые у меня есть sh, но с осталась одна проблема.
Я изменил и вроде разработал его, и все работало, кроме случаев, когда я вставляю число, выходящее за пределы диапазона 1 ~ 100, в начале это работает, и следующая строка будет снова спросить insert a number
, как написано в коде блока input
.
Однако, начиная со второго номера вставки, если я вставлю число вне диапазона, он не сможет определить, находится ли число вне диапазона, и просто напечатает это число.
insert a number : 1000
insert a number : -90
insert a number : 101
insert a number : 70
bigger than 0 smaller than 70.
insert a number : 35
bigger than 35 smaller than 70.
insert a number : 1000
insert a number :
, где, как это должно произойти, на самом деле происходит следующее:
insert a number : 1000
insert a number : 200
insert a number : 70
bigger than 0 smaller than 70.
insert a number : 2000
bigger than 0 smaller than 2000.
Может ли кто-нибудь дать мне несколько советов о том, как решить эту проблему? Я догадываюсь, что проблема в том, что output
не может получить то, что делает input
, но я не уверен ...
Ниже приведен код с текущим проблема.
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#pragma warning (disable : 4996)
int input();
int random(int);
void myflush();
int output(int, int);
int main()
{
int num;
int i;
int ran;
int count = 0;
srand((unsigned int)time(NULL));
i = 0;
while (i < 1) {
ran = 1 + random(101); // random number 1~101
++i;
}
num = input();
count = output(ran, num);
printf("You got it right on your %d try!", count);
return 0;
}
int input()
{
int num;
printf("insert a number : ");
scanf("%d", &num);
while (num < 1 || num > 100 || getchar() != '\n') {
myflush();
printf("insert a number : ");
scanf("%d", &num);
}
return num;
}
int random(int n)
{
int res;
res = rand() % n;
return res;
}
void myflush()
{
while (getchar() != '\n') {
;
}
return;
}
int output(int ran, int num) {
int count = 0;
int large = 100;
int small = 0;
while (1) {
if (num != ran) {
count++;
if (num < ran) {
small = num;
printf("bigger than %d and smaller than %d\n", small, large);
}
else if (num > ran) {
large = num;
printf("bigger than %d and smaller than %d\n", small, large);
}
printf("insert a number : ");
scanf("%d", &num);
}
else {
count++;
break;
}
}
return count;
}