2013-11-11 3 views
-1

Моя программа генерирует числа, которые являются 9999999999999999999999999999999999999999. Как я могу заставить эту программу генерировать число от 1 до 100. Как я могу рассказать пользователю, сколько попыток у них осталось?C Guessing Game

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h> 

int main() 
{ 

int loopcount = 0; 

int y = rand()%10; 

int a; 

printf("You have 8 chances to guess the right number. Enter your first number."); 

while ((loopcount < 9) &&(y>0) &&(y<100)) 
    { 
    printf("enter a number."); 
    scanf("%d", &a); 
    if (a == y){ 
     printf(" you have guessed the correct number."); 
     loopcount = loopcount + 9; 
     break; 
     } 
    else if (a < y){ 
     printf("the number is less than"); 
     loopcount = loopcount + 1; 
     continue; 
    } 
    else if (a > y){ 
    printf("the number is greater"); 
     loopcount = loopcount + 1; 
     continue; 
    } 
    else{ 
     printf("nothing."); 
     break; 
    } 

} 

system("pause"); 

}

+9

Что вы подразумеваете под «номерами 999999 ...»? – MasterOfBinary

+0

'printf ("% d ", 9-loopcount)' для второго вопроса – AShelly

+2

Помимо предложений pjs, вы должны отметить, что вы даете пользователю 9 попыток, а не 8; вы начинаете с 0 и останавливаетесь на 8. – MasterOfBinary

ответ

2

Несколько предложений:

  1. Нет необходимости проверять, что y > 0 и y < 100, это верно по строительства после применения @ затруднительного MasterOfBinary в сделать modulo 100 и добавить 1. Однако сделайте modulo 99, если вы хотите, чтобы результат был строго меньше 100.
  2. Ваши ответные сообщения обратные. Если a < y их догадка слишком маленький, не слишком большой.
  3. Заключительная статья else бесполезна, сделайте else if над ней a plain else.
  4. Оператор loopcount = loopcount + 9; не нужен, break; сразу же после этого выйдет из строя.
  5. Вы можете заменить другие операторы loopcount с приращением бланков: ++loopcount; или loopcount += 1;.
  6. В строке запроса и ответа нужны символы новой строки (\n) в конце.
+0

, когда pjs говорит «modulo», он означает «остаток после деления на», что и делает% – pm100

3

Сформировать число от 1 до 100 (включительно), используйте следующее:

int y = rand() % 100 + 1; 

Чтобы сказать им, сколько попыток они оставили, вам нужна строка

printf("Number of tries: %d", 9 - loopcount); 

в конце вашего цикла while.

1

Если вы не засеваете генератор случайных чисел, rand всегда будет производить такую ​​же последовательность чисел. Чтобы засеять его, используйте функцию srand. Канонический путь к семени его от времени суток, например:

#include <time.h> 
... 
srand(time(NULL));