Probleme:
scanf("%d", userin); //you are sending variable
- Das ist nicht richtig, wie Sie Adresse des
variable
als Argument an die scanf()
nicht die variable
so anstatt sie senden müssen ändern zu:
scanf("%d", &userin); //ypu need to send the address instead
und rand()%11
würde eine beliebige Anzahl 0
-10
produzieren, aber nicht 1
-10
als andere Antwort schon sagt, Verwendung:
(rand()%10)+1 //to produce number from 1 to 10
Lösung:
Und auch enthalten time.h
Funktion srand(time(NULL));
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
srand(time(NULL));
int userin;
printf("Guess a number from 1 to 10\n");
scanf("%d", &userin);
int r = (rand() % 10)+1;
if (r==userin)
{
printf ("you are right");
}
else
{
printf("Try again");
}
return 0;
}
Warum srand(time(NULL))
zu benutzen?
rand()
ist überhaupt nicht zufällig, es ist nur eine Funktion, die eine Folge von Zahlen erzeugt, die oberflächlich zufällig sind und wiederholen sich über einen Zeitraum.
Die einzige Sache, die Sie ändern können, ist der Startwert, der Ihre Startposition in der Reihenfolge ändert.
und srand(time(NULL))
wird aus diesem Grund verwendet
Sie rufen nicht 'srand' Funktion auf. Enthalte 'time.h' und rufe' srand (time (NULL)); 'nach der Deklaration der Variablen. – Misaz
Missing '&' beim Lesen: 'scanf ("% d ", & userin);' statt 'scanf ("% d ", userin);' –
Interessant, dass der Code die Zufallszahl nach der Benutzereingabe generiert. Natürlich ist die Reihenfolge nicht so wichtig - es scheint nur so, als ob der Code mit dem Wissen der Benutzereingabe betrügt. Könnte einfach 'puts (" Vermute eine Zahl von 1 bis 10 "); scanf ("*% s"); puts (rand()% 10 == 0? "Sie haben Recht": "Bitte versuchen Sie es erneut"); 'Wird ein Vergleich mit den richtigen Benutzereingaben wirklich benötigt? User gewinnt in jedem Fall 1/10 der Zeit. – chux