2014-03-02 40 views
1

你好仍然得到C的掛,這個程序應該工作!但它不斷崩潰在void cheack(int *guess, int num),我只是不知道該怎麼做來解決它。有沒有人有建議? Thanks.Also這個程序應該做一個隨機數字1-20,並且用戶應該猜測它,如果打印出五個嘗試的高或低,直到用戶正確或失敗。C函數崩潰在調試(沒有錯誤給出)

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

int ranNumGen(); 
void Right(int num); // prompt that you guessed right 
void cheack(int* guess, int num); // if else's to tell you to high to low... 
void sorry(int num); // prompt for not guessing it right 


int main(void) 
{ 
    // Local declarations 
    int num; 
    int guess; 





    // Sets variables 
    num = ranNumGen(); 



    // Prompt 
    printf("\nLets play a game"); 
    printf("\nCan you guess the number I am thinking of?"); 
    printf("\nI will give you a hint its a number between (1 and 20)"); 
    printf("\nI am also going to going to give you five tries."); 
    printf("\nHave a guess! "); 
    printf("\nShows number to win %d\n", num); // shows number to win to check if it works 
    scanf_s("%d", &guess); 


    // Check function 
    cheack(&guess, num); 




    // End promts (will be its own function later) 
    if (guess == num) 
    { 
     printf("\nGoodbye\n"); 
    } 
    else 
    { 
     sorry(num); 
    } 
    return 0; 
} 

int ranNumGen() 
{ 
    int range; 
    srand(time(NULL)); 
    range = 20; 
    range = (rand() % range + 1); 
    return range; 
} 

void Right(int num) 
{ 
    printf("\n\t*******************************************"); 
    printf("\n\t* Wow you guessed it! Yep its %d alright. *", num); 
    printf("\n\t* You won't get it next time! :)  *"); 
    printf("\n\t*******************************************"); 
} 

void cheack(int *guess, int num) 
{ 
    int a; 
    a = 0; 
    while (a < 4) 
    { 
     if ((*guess) == num) 
     { 
      Right(num); 
      break; 
     } 
     if ((*guess) > num) 
     { 
      printf("\nYour guess is to high.", *guess); 
      printf("\nTry again: "); 
      scanf_s("%d", &guess); 
     } 
     if ((*guess) < num) 
     { 
      printf("\nYour guess is to low.", *guess); 
      printf("\nTry again: "); 
      scanf_s("%d", &guess); 
     } 

    } 

return; 
} 

void sorry(int num) 
{ 
    printf("\nSorry buddy, you didn't guess it..."); 
    printf("\nThe number was %d better luck next time.\n", num); 
    return; 
} 
+0

順便說一句,你不需要'回報;'在'void'函數的結束。 – pzaenger

+0

謝謝,我錯過了。你也不「擁有」。從我可以告訴和已經知道的是,無效函數不需要返回;但它的「良好做法」添加一個。我不知道爲什麼...... –

回答

2

scanf預計指針,以便在這裏不需要的ADRESS操作:

scanf_s("%d", guess); 
+0

OMG的小東西。 非常感謝。我需要更好地使用指針的概念。 –