1和0存在于空int数组中

时间:2018-02-25 22:18:22

标签: c arrays initialization undefined

有人能指出我的错误,值0和1总是进入if并返回true。 (假设数组为空)。

#include <stdio.h>
#include <stdbool.h>
#define ARRAY_SIZE 5

int getUserInput(int position){
    printf("Please enter an integer for the %d position of the array\n", position);
    int input;
    scanf(" %d", &input);
    return input;
}

bool hasValue(int value, int array[ARRAY_SIZE]){
    int i;
    for(i = 0; i < ARRAY_SIZE; i++){

        if (value == array[i]){
            printf("This value already exists in the array.\n");
            return true;
        }
    }
    return false;
}

main(){
    int array[ARRAY_SIZE];
    int index = 0;

    while (index < ARRAY_SIZE ){
        int input = getUserInput(index);

        if (!hasValue(input, array)){
            array[index] = input;
            index++;
        }
     }
}

1 个答案:

答案 0 :(得分:3)

最好将数组size作为参数传递给函数而不是修复它。像

bool hasValue(int value, int array[], unsigned int size)

由于ARRAY_SIZE是常量,因此函数内的for循环始终执行ARRAY_SIZE次。

修改 如果您仍未解决代码问题。用此替换相关代码并尝试

bool hasValue(int value, int array[], int size) {
    int i;
    for(i = 0; i < size; i++) {
        if (value == array[i]) {
            printf("This value already exists in the array.\n");
            return true;
        }
    }
    return false;
}

int main() {
    int array[ARRAY_SIZE];
    int index = 0;

    while (index < ARRAY_SIZE ) {
        int input = getUserInput(index);

        if (!hasValue(input, array, index)) {
            array[index] = input;
            index++;
        }

     }

     return 0;
}