有人能指出我的错误,值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++;
}
}
}
答案 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;
}