我正在尝试创建一个函数来比较两个四位数和 返回两者之间相似数字的个数。例如,生成的号码是 4311,用户输入的是 1488, 分数应返回 2(4 和 1)。
如果是4311,另一个是1147, 得分应返回三个(1、1 和 4)。我不知道为什么它没有给我正确的输出,希望你能帮忙。
int getSameDigitScore(int playerGuess, int generatedNum) {
int score = 0;
int i;
int j;
int k;
int generatedNumArray[4];
int playerGuessArray[4];
// turns playerGuess into an array
while (playerGuess > 0 ) {
i = 0;
playerGuessArray[i] = playerGuess % 10;
i++;
playerGuess /= 10;
}
// turns generatedNum into an array
while (generatedNum > 0) {
i = 0;
generatedNumArray[i] = generatedNum % 10;
i++;
generatedNum /= 10;
}
// compares the two arrays
for (k = 3; k >= 0; k--) {
for (j = 3; j >= 0; j--) {
if (generatedNumArray[k] == playerGuessArray[j]) {
score++;
playerGuessArray[j] = 0;
j = -5;
}
}
}
return score;
}
最佳答案
您在生成 playerGuessArray 和 generatedNumArray 时在 while 循环内分配 i = 0
。因此 playerGuess 和 generatedNumArray 数组的元素为 first digit of your number 0 0 0
。
将初始化移出循环。
关于C-比较两个四位数字数组的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59062980/