2
在我正在寫的一個hang子手程序中,當用戶第一次輸入「e」,然後嘗試輸入「鰻魚」或「蜜蜂」時, e「作爲第二個提示,將顯示」你已經猜到了這封信「兩次。我怎樣才能解決這個問題?某些語句打印兩次
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
int main(){
char w[13][3] = {
{ 'c', 'a', 't' }, //0
{ 'd', 'o', 'g' }, //1
{ 'r', 'a', 't' }, //2
{ 'e', 'e', 'l' }, //3
{ 'c', 'o', 'w' }, //4
{ 'o', 'w', 'l' }, //5
{ 'e', 'm', 'u' }, //6
{ 'b', 'a', 't' }, //7
{ 'e', 'l', 'k' }, //8
{ 'p', 'i', 'g' }, //9
{ 'b', 'e', 'e' }, //10
{ 'h', 'e', 'n' }, //11
{ 'f', 'o', 'x' }, //12
};
char u,
newline,
dis[16];
int random,
guesses = 3,
finish = 0;
_Bool successfulGuess = false;
srand(time(NULL));
random = rand() % 13;
printf("Animal %d\n", random); //check random number
printf("---------\n\n");
printf("Enter a letter: ");
u = getchar();
newline = getchar();
for (int i = 0; i < 3; i++){
if (w[random][i] == u){
successfulGuess = true;
dis[i] = u;
}
else {
dis[i] = '_';
}
}
for (int j = 0; j < 3; j++){
dis[j] = dis[j];
}
printf("\n");
for (int i = 0; i < 3; i++){
printf("%c", dis[i]);
}
if (successfulGuess == false){
--guesses;
}
printf("\n\nGuesses left: %d", guesses);
printf("\n\n");
while (guesses > 0){
finish = 0;
successfulGuess = false;
printf("Enter a letter: ");
u = getchar();
newline = getchar();
for (int i = 0; i < 3; i++){
if (u == dis[i]){
successfulGuess = true;
printf("\nYou already guessed this letter.\n");
printf("\ninput = dis[i]\nGuesses left: %d\n\n", guesses);
}
else if (w[random][i] == u){
successfulGuess = true;
dis[i] = u;
printf("\ninput = array char\nGuesses left: %d\n\n", guesses);
}
}
for (int i = 0; i < 3; i++){
printf("%c", dis[i]);
}
if (successfulGuess == false){
guesses--;
printf("\n\nbool statement\nGuesses left: %d\n\n", guesses);
}
if (guesses == 0){
printf("Sorry, you've run out of guesses.");
}
for (int i = 0; i < 3; i++) {
if (dis[i] != '_') {
finish++;
}
if (finish == 3){
printf("\n\nYou guessed the word!");
guesses = 0;
}
else{
continue;
}
}
printf("\n\n");
}
system("pause");
}
爲什麼你有'for(int j = 0; j <3; j ++){dis [j] = dis [j]; ''在你的程序中? – 2014-10-03 05:58:29
'for(int j = 0; j <3; j ++){dis [j] = dis [j]; }'循環? – AnT 2014-10-03 05:58:50
請閱讀[「最小,完整,可驗證,示例」中的「最小」](http://stackoverflow.com/help/mcve)。爲什麼我們需要看到所有「工作」可能性的數組?如果您的隨機選擇正在工作,請將其解決並硬編碼問題案例。簡而言之:不要發佈*「這是我的所有代碼,找到我的錯誤」*,而是*「我已經將我的代碼削減到了顯示問題的最重要版本的程序」*。這將集中您的問題,並且您可能在過程中發現自己的錯誤... – HostileFork 2014-10-03 06:02:09