C-比较两个四位数字数组的函数

标签 c arrays for-loop while-loop

我正在尝试创建一个函数来比较两个四位数和 返回两者之间相似数字的个数。例如,生成的号码是 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/

相关文章:

arrays - 根据键(id)对perl数组数据结构中的键值对进行排序

Java:对象数组中的对象数组

Javascript 函数在 for 循环中不起作用

c++ - 几次(非常好)迭代后循环崩溃/损坏

c - 如何一次重命名多个变量名称 (c/c++)

c - 为什么 SIGINT 停止 sleep 不止一次?

c - for 循环中的段错误

c - 使用 strtok 解析单词

java - 从文件中读取二维数组-Java

python - 将字典从特定索引号附加到 pandas 数据帧