首页 > 解决方案 > 如何找到两个数组具有相同数字的位置?

问题描述

所以我试图用 C 语言做一个猜测程序,用户必须输入 5 个数字,计算机生成 5 个随机数。我的用户输入数字的代码是这样的:

for (int i = 0; i < NUM_SIZE; ++i) {
        scanf("%d", &(userGuess[i]));
}

我想输出用户输入正确的位置,例如,如果用户输入2 3 4 5 7和计算机的 5 个随机数是2 3 9 8 7它会打印出来correct position(s): 0, 1, 4 这是我目前尝试过的,但它只能打印0, 1,当它尝试打印一个数字时在它像我放的示例中那样跳过之后,它会打印 0、0 和一个长随机数。

for (int i = 0; i < NUM_SIZE; ++i){
        if (userGuess[i] == winNum[i]) {
            matchedPos[i] = i;
        }
}

标签: arraysccompare

解决方案


问题是你从来没有初始化matchedPos用户没有猜对的元素。您需要初始化所有数组元素。

i此外,放入数组没有意义matchedPos,因为它与数组索引相同。相反,分配01取决于猜测是否匹配。然后,您只需打印包含1.

int matchedPos[NUM_SIZE];

for (int i = 0; i < NUM_SIZE; i++) {
    matchedPos[i] = userGuess[i] == winNum[i];
}

printf("Correct guesses: ");
for (int i = 0; i < NUM_SIZE; i++) {
    if (matchedPos[i]) {
        printf("%d ", i);
    }
printf("\n");

推荐阅读