为了账号安全,请及时绑定邮箱和手机立即绑定

在数组中有两个相同数字时,为何运行结果不对了?

#include <stdio.h>

int main()


{

int arr[5]={3,12,8,8,6};

    int i;

    int value =8;

    int index;

    for(i=0;i<5;i++)

    {

       /* 请完善数组查询功能 */

    if (arr[i] == value){

    index = i;

} else{

index = -1;

}         

    }

    printf("index=%d\n",index);

    return 0; 

}

这段程序,我将数组中的8变为了两个,在编译运行时,输出结果反而变成了-1    不知怎么回事。当然,也能解决,一个方案是,在index=1;的语句后,增加一个break;输出结果为2(第一个出现的符合条件的数的下标).  第二个方案是直接将else语句删掉,输出结果就会变成3(最后一个出现的符合条件的数的下标)。

正在回答

2 回答

if else 在for循环内部,他会一直循环到数组的最后一位,所以输出-1.

0 回复 有任何疑惑可以回复我~
#1

先木先生 提问者

但是,当数组中没有相同的数字的时候,为何会输出正确的答案?
2018-09-16 回复 有任何疑惑可以回复我~

#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;

        }  

       index=-1;

    }

    return index;

}


int main()

{

    int arr[5]={3,12,9,8,6};

    int value = 8;

    int index = getIndex(arr,value);      //这里应该传什么参数呢?

    if(index!=-1)

    {

        printf("%d在数组中存在,下标为:%d\n",value,index);             

    }

    else

    {

        printf("%d在数组中不存在。\n",value);    

    }

    return 0;    

}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

在数组中有两个相同数字时,为何运行结果不对了?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信