我對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.
的問題:
所選擇的字母不是隨機的,但總是問:
的第一個猜測採用成本兩個「生活「?!
兩個問題於一體。兩個重複。 http://stackoverflow.com/questions/8724582/rand-not-generating-random-numbers-after-modulo-operation http://stackoverflow.com/questions/3744776/simple-c-scanf-does-not-work – 2014-10-29 12:58:03
您是否閱讀過[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')順便說一句,C和C++是*不同的語言* – 2014-10-29 12:59:43
,也許GIYF和LMGTFY沿着同一條線略少進攻替代品。 – bph 2014-10-29 13:03:32