2017-01-29 1 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; 
} 

Wenn ich den Zufallsvariable angezeigt wird, wenn er bereits eine Zahl mit einem Wert Müll erzeugt wird, ausgegeben werden. Aber das Code-Snippet funktioniert, um den Vergleich zwischen der Schätzung und der Zufallszahl zu überprüfen, ich kann einfach nicht scheinen, die Zufallszahl korrekt auszugeben.C Zufallszahl produziert garbage Wert

+1

Willkommen bei Stack Overflow. Bitte beachten Sie, dass die bevorzugte Art zu sagen "Danke" hier ist durch Up-Voting gute Fragen und hilfreiche Antworten (sobald Sie genug Ruf zu tun haben), und durch die Annahme der hilfreichsten Antwort auf alle Fragen Sie fragen (Das gibt Ihnen auch einen kleinen Schub für Ihre Ruf). Bitte lesen Sie die [Über] Seite und auch [Wie stelle ich Fragen? hier?] (Http://stackoverflow.com/help/how-to-ask) und [Was mache ich, wenn jemand meine Frage beantwortet ?] (http://stackoverflow.com/help/someone-answers) –

+0

@ user1937219: Sie können eine der Antworten akzeptieren, indem Sie auf das graue Häkchen unterhalb der Punktzahl klicken. – chqrlie

Antwort

4

%d in printf erwartet ein Argument von int Datentyp. Sie übergeben int * Datentyp (&random).
Entfernen & vor random in letzten zwei printf s.

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

Gern geschehen. – haccks

+0

Sie drucken die Adresse der Variablen und nicht ihren Wert. – NeoR

0

Sie sollten den Wert von random statt dessen Adresse passieren:

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

Beachten Sie auch, dass Sie den Rückgabewert von scanf() überprüfen sollten: Wenn Sie einen Buchstaben eingeben, wird das Programm nicht definiertes Verhalten haben kann es nach dem Durchlaufen laufen~~POS=HEADCOMP 5 mal verlassen, oder iterieren für immer oder etwas anderes tun, ganz ...

Hier ist eine verbesserte Version:

#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; 
}