2015-10-15 107 views
1

我得到了我的程序完全工作,除了我需要程序停止詢問5次失敗嘗試後。我完全不知道如何去做。假設輸入的數字連續5次不正確,最後會有一個抱歉的消息。我無法弄清楚如何將計數器插入代碼中,我知道我輸入的內容可能遠不及正確。如何在5次嘗試後結束「do ... while」循環?在C

P.S.代碼必須具有多個功能。有些我寧願自己放入一個,但教導說多個。

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

int number; 

void welcomeMessage(){ 
    printf("Welcome to my new guessing game!\n"); 
    printf("Let's get started!\n"); 
} 

int randomNumber(int number){ 

    int range; 

    srand(time(NULL)); 
    range = (20 - 1) + 1; 
    number = rand() % range + 1; 

    return number; 
} 

int guessInput(){ 
    int guess; 

    printf("I'm thinking of a number between 1 and 20.\n"); 
    printf("Care to give it a guess? Be careful! You only get 5 tries!: "); 
    scanf("%d", &guess); 

    return guess; 
} 

int guess_input(){ 
    int guess; 
    scanf("%d", &guess); 
    return guess; 
} 

int wrongAnswer(int guess){ 
    if(guess < number) 
    { 
     printf("Try again, your guess is too low: "); 
     return 1; 
    } else if(guess > number) { 
     printf("Give it another try, your guess was a bit too high: "); 
     return 1; 
    } 
    return 0; 
} 

int correctAnswer(int guess){ 
    if(guess == number){ 
     printf("Great job! That time you got it right!\n"); 
     return 0; 
    } else{ 
     return 1; 
    } 
} 

void sorryMessage(int number){ 
    printf("Sorry, the correct number was %number.\n"); 
    printf("Better luck next time!"); 
} 


int main(){ 
    int number; 
    int loopCount = 5 
    int guess; 
    int correct_answer = 1; 
    int wrong_answer = 1; 

    welcomeMessage(); 
    number = randomNumber(); 
    guessInput(); 
    do { 
     correct_answer = correctAnswer(guess); 
     wrong_answer = wrongAnswer(guess); 
     guess = guess_input(); 
    } 
    while(correct_answer == 1); 
    if(loopcount = 5){ 
     sorryMessage 
    } 

    return 0; 
} 

回答

0

我對程序進行了微小的更改,使其能夠按預期進行編譯和運行。

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

int number; 

void welcomeMessage(){ 
    printf("Welcome to my new guessing game!\n"); 
    printf("Let's get started!\n"); 
} 

int randomNumber(){ 

    int range; 

    srand((int)time(NULL)); 
    range = (20 - 1) + 1; 

    number = rand() % range + 1; 

    return number; 
} 

int guessInput(){ 

    int guess; 

    printf("I'm thinking of a number between 1 and 20.\n"); 
    printf("Care to give it a guess? Be careful! You only get 5 tries!: "); 
    scanf("%d", &guess); 

    return guess; 
} 

int guess_input(){ 

    int guess; 
    scanf("%d", &guess); 

    return guess; 
} 

int wrongAnswer(int guess){ 

    if(guess < number) 
    { 
     printf("Try again, your guess is too low: "); 
     return 1; 

    } 
    else if(guess > number) 
    { 
     printf("Give it another try, your guess was a bit too high: "); 
     return 1; 
    } 
    return 0; 
} 

int correctAnswer(int guess){ 

    if(guess == number){ 
     printf("Great job! That time you got it right!\n"); 
     return 1; 
    } else{ 
     return 0; 
    } 
} 

void sorryMessage(int number){ 
    printf("Sorry, the correct number was %d\n",number); 
    printf("Better luck next time!"); 
} 


int main(){ 
    int number; 

    int loopCount = 0; 

    int guess; 

    int correct_answer; 

    int wrong_answer; 

    welcomeMessage(); 
    number = randomNumber(); 
    do 
    { 
     loopCount += 1; 
     if(loopCount > 5) 
     { 
      sorryMessage(number); 
      break; 
     } 
     guess = guessInput(); 
     correct_answer = correctAnswer(guess); 
     wrong_answer = wrongAnswer(guess); 

    } while(!correct_answer); 


    return 0; 

} 
+0

注:我更改了您的correctAnswer函數,如果答案正確,則返回1,否則返回0。你反過來了。但是這樣做使得它更直觀,就像一個布爾值。 – waterjuice

+0

這很有效,除非每次都不正確,它會重複整個'int guessInput'printf(「我正在考慮1到20之間的數字\ n」); printf(「小心給它一個猜測?小心!你只能得到5次嘗試!」);.我希望它打印得太低或太高。 –

+0

這是因爲你的'guessInput()'函數每次都打印相同的東西。所以如果你想讓它打印出不同的東西,它應該選擇一個參數來選擇它會說的內容。例如,傳遞'loopCount'值作爲參數並使用'if(1 == loopCount){printf(「Something」); } else {printf(「別的東西!」); } – waterjuice