2017-01-29 3 views
0
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

int main() { 

    srand(time(0)); 

    int random = 0, guess, guesses = 1; 
    random = rand() % 100 + 1; 
    printf("The number has been generated. Input 0 to quit.\n"); 
    do { 
     scanf("%d", &guess); //takes user input for guess 
     if (guess > random && guess != 0) 
      printf("Lower!\n"); 
     else 
     if (guess < random && guess != 0) 
      printf("Higher!\n"); 
     else 
     if (guess == random) { 
      printf("Bingo!"); 
      return 0; 
     } else 
     if (guess == 0) { 
      printf("Thanks for playing, the number was %d\n", &random); 
      return 0; 
     } 
     guesses++; 
    } while (guesses != 6); //maximum of 5 guesses 

    printf("Thanks for playing, the number was %d\n", &random); 

    return 0; 
} 

Всякий раз, когда я показываю случайную переменную, когда она уже сгенерировала число, будет выведено значение мусора. Но фрагмент кода работает с проверкой сравнения между догадкой и случайным числом, я просто не могу правильно отобразить случайное число.C случайное число, производящее значение мусора

+1

Добро пожаловать в Переполнение стека. Обратите внимание, что предпочтительный способ сказать «спасибо» здесь ответы на вопросы и полезные ответы (если у вас достаточно репутации, чтобы сделать это), и, приняв наиболее полезный ответ на любой заданный вами вопрос (что также дает вам небольшой импульс для вашей репутации ). См. Страницу [About], а также [Как задать вопросы здесь?] (Http://stackoverflow.com/help/how-to-ask) и [Что мне делать, когда кто-то отвечает на мой вопрос ? ?] (http://stackoverflow.com/help/someone-answers) –

+0

@ user1937219: вы можете принять один из ответов, нажав на серый флажок под своим счетом. – chqrlie

ответ

4

%d в printf ожидает аргумент int тип данных. Вы проходите int * тип данных (&random).
Удалить & до random Последние две минуты printf s.

printf("Thanks for playing, the number was %d\n", random); 
+0

Добро пожаловать. – haccks

+0

вы печатаете адрес переменной, а не ее значение. – NeoR

0

Вы должны передать значение random вместо его адрес:

printf("Thanks for playing, the number was %d\n", random); 

Заметим также, что вы должны проверить возвращаемое значение scanf(): если вы печатаете письмо, программа будет иметь неопределенное поведение , он может выйти после того, как итерация 5 раз, или итерацию навсегда или сделать что-то совсем другое ...

Вот улучшенная версия:

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

int main(void) { 
    int random, guess, guesses; 
    srand(time(0)); 

    random = rand() % 100 + 1; 
    printf("The number has been generated. Input 0 to quit.\n"); 
    for (guesses = 0; guesses < 5; guesses++) { 
     // take user input for guess 
     if (scanf("%d", &guess) != 1 || guess == 0) 
      break; 

     if (guess > random) { 
      printf("Lower!\n"); 
     } else 
     if (guess < random) { 
      printf("Higher!\n"); 
     } else { 
      printf("Bingo!\n"); 
      return 0; 
     } 
    } 

    printf("Thanks for playing, the number was %d\n", random); 

    return 0; 
} 
Смежные вопросы