问答详情
源自:6-6 数组的应用(二)

为什么输入不在数组中的数字也能通过if(arr[i]==value)

#include <stdio.h>
int getIndex(int arr[5],int value)
{
    int i;
    int index;
    
    for(i=0;i<5;i++)
    {
       /* 请完善数组查询功能 */
        if(arr[i] == value){
           index = i;
           break;
        }
    }
    return index;
}

int main()
{
    int arr[5]={3,12,9,8,6};
    int value = 7;
    int index = getIndex(arr, value);      //这里应该传什么参数呢?
    if(index!=-1)
    {   
        printf("%d在数组中存在,下标为:%d\n",value,index);
    }
    else
    {
        printf("%d在数组中不存在。\n",value);    
    }
    return 0;    
}

提问者:qq_慕盖茨8022849 2021-01-08 16:46

个回答

  • 伪面君子4627072
    2021-01-09 02:16:22

    这个应该是设计题目的时候没改回来的一个bug。看主函数里面输出不存在提示语的情况是返回值index!=-1,但是在子函数里面并没有定义index的值,也就是说我们不知道index是什么值,对于不在数组内的数字确实是没有通过if语句,但是由于不通过if语句,函数的返回值依然不是-1,所以最后给出的提示就是存在。(第一次给人讲代码耶,我说明白了吗?)