Oke*_*Oke 4 c++ arrays function
目的是编写一个在数组中搜索值的函数。如果数组包含该值,则返回键所在的索引;如果数组不包含该值,则返回-1
我有一个C ++函数,它返回数组变量的索引。我需要解释为什么我的我的部分代码(即for循环表达式中的“ i ++”)被我的IDE标记为“无法访问”
我尝试逐行调试代码,以查看是否可以解释为什么i ++无法访问。我无法确定原因。但是,我怀疑这可能与我的“ return”陈述有关
int main()
{
const int size = 4;
int array[] = { 345, 75896, 2, 543 };
int searchKey = 543;
std::cout << "Found at: " << search(array, size, searchKey);
return 0;
}
int search(int* array, int size, int searchkey)
{
while (1) {
std::cout << "Enter an Integer to search. Hit -1 to quit.\n";
scanf("%d", &searchkey);
if (searchkey == -1) {
break;
}
for (int i = 0; i < size; i++) {
if (array[i] == searchkey) {
return 1;
}
else {
return -1;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望函数在数组中存在searchKey的情况下返回数组的索引,但是它总是返回“ -1”
该for循环是不完全正确。无论数组中第一项的值如何,函数都会在循环的第一次迭代中返回。如果第一项与搜索键匹配,则函数返回1。如果不匹配,则返回-1。它永远不会触及数组中的第二项。
您需要删除else零件。仅在循环结束后返回-1。
for(int i=0; i<size; i++){
if(array[i] == searchkey){
// Key was found. Return the index.
return i;
}
}
// Key was not found.
return -1;
Run Code Online (Sandbox Code Playgroud)
小智 6
您的代码逻辑决定在for循环中第一次返回1或-1,因此它永远不会碰到i ++。
循环结束时(搜索完成时),您仅应返回-1
for(int i=0; i<size; i++){
if(array[i] == searchkey){
// return the INDEX of array when found immediately
return i;
}
}
return -1;
Run Code Online (Sandbox Code Playgroud)