Я немного новичок в C/C++, и я не понимаю, что моя проблема в следующем коде. В этом задании я ограничен только для использования C-функций и синтаксиса, C++ не допускается.C: неисправность rand() и scanf()?
Программа должна выбрать случайный символ из алфавита и дать пользователю 3 попытаться угадать его.
#include <stdio.h>
#include <stdlib.h>
#define guesses 3
int main(){
setbuf(stdout, NULL);
/* A 2.P.b */
/* version with loop*/
int i = 0;
char randomChar = (65 + (rand()%26) + 1);
/* comment the line below, when the programm works as intended */
printf("\n%c\n", randomChar);
char guessedChar;
while((i<=guesses) && (guessedChar != randomChar)){
printf("Guess a letter.\n");
scanf("%c", &guessedChar);
if(guessedChar != randomChar){
int guessesLeft = guesses - i;
if (guessesLeft > 1){
printf("Wrong letter. You have %d more tries.\n", guessesLeft);
}
else{
printf("Wrong letter. Last try.");
}
}
else{
printf("Congratulations.\n");
}
i++;
}
return 1;
}
Выход следующим образом:
Q
Guess a letter.
A
Wrong letter. You have 3 more tries.
Guess a letter.
Wrong letter. You have 2 more tries.
Guess a letter.
B
Wrong letter. Last try.Guess a letter.
Wrong letter. Last try.
Проблемы:
Выбранная буква не является случайным, но всегда Q.
Первое предположение требует затраты двух «жизней «?!
Два вопроса в одном. Оба дубликата. http://stackoverflow.com/questions/8724582/rand-not-generating-random-numbers-after-modulo-operation http://stackoverflow.com/questions/3744776/simple-c-scanf-does-not-work –
Вы ** прочитали документацию ** из [rand (3)] (http://man7.org/linux/man-pages/man3/rand.3.html) и [scanf (3)] (http : //man7.org/linux/man-pages/man3/scanf.3.html), как и следовало бы? Если бы вы это сделали, вы не стали бы задавать вопрос. Также попробуйте понять, что означает RTFM и STFW. и компилировать со всеми предупреждениями и информацией об отладке 'gcc -Wall -Wextra -g') BTW, C & C++ - * разные языки * –
и, возможно, GIYF и LMGTFY для менее менее оскорбительных альтернатив по тем же линиям. – bph