我对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