您好,我正在製作一個生成主代碼的快速程序,用戶必須猜測代碼。當檢查用戶的猜測時,我使用兩個函數一個用於精確匹配,另一個用於緊密匹配(其中他們得到的數字在主碼中但不在正確的位置)返回值函數C
Ex。主代碼1 2 3 4
用戶2 3 2 4 輸出應顯示用戶有2個密切匹配和一個完全匹配。我無法理解如何正確返回一個int。
當我嘗試在Main中打印它們時,我的輸出只顯示exactMatch和closeMatch的默認值。任何見解將不勝感激。謝謝。
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>
#define CODELENGTH 4
#define NUMSYMBOLS 6
int MasterCode[4];
int guess[ 4 ];
int exactMatch;
int closeMatch=0;
void genCode (int MasterCode[])
{
int i=0;
int k;
while (i < CODELENGTH){
MasterCode[i] =rand() %NUMSYMBOLS +1;
i++;
}//end while loop.
for (k = 0 ; k < 4; k++) {
printf("%d ", MasterCode[ k ]);
}
printf("\n");
}
void getGuess (int guess[])
{
int number = 0;
printf("Please enter your list of 4 numbers between 1 and 6: ");
int j;
int k;
for (j = 0 ; j < 4; j++) {
scanf("%d", &number);
guess[ j ] = number;
}
printf("Your array has these values: ");
for (k = 0 ; k < 4; k++) {
printf("%d ", guess[ k ]);
}
printf("\n");
}
int main (int argc, char **argv)
{
srand (time(NULL));
genCode(MasterCode);
getGuess(guess);
checkExactMatches(MasterCode, guess, exactMatch);
checkCloseMatches(MasterCode, guess, closeMatch);
printf("%d = Ending exactMatches \n", exactMatch);
printf("%d = Ending closeMatches \n", closeMatch);
}
int checkExactMatches (int MasterCode[], int guess[], int exactMatch)
{
int woot;
for(woot=0; woot<4; woot++){
if (MasterCode[woot] == guess[woot]){
printf("Exact Match found \n");
exactMatch ++;
printf("%d = Guess \n" , guess[ woot ]);
printf("%d = MasterCode \n", MasterCode[ woot ]);
printf("%d = exactMatch \n", exactMatch);
}// end if
if (MasterCode[woot] != guess[woot])
printf("No EXACT match \n");
}//end for loop
return exactMatch;
} // end checkExactMatches
int checkCloseMatches (int MasterCode[], int guess[], int closeMatch)
{
int k;
int j;
for(k=0; k<4; k++){
for (j=0; j<4; j++) {
if (MasterCode[k] == guess[j]){
printf("CLOSE Match found \n");
closeMatch ++;
printf("%d = Guess \n" , guess[ j ]);
printf("%d = MasterCode \n \n", MasterCode[ k ]);
printf("%d = closeMatch \n \n", closeMatch);
}// end if
if (MasterCode[k] != guess[j])
printf("No CLOSE match \n");
}//end nested for loop
}//end for loop
return closeMatch;
} // end checkCloseMatches
這與主謀非常相似! – nneonneo
是的。它基於那場比賽。 :) –