#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(最后一个出现的符合条件的数的下标)。
if else 在for循环内部,他会一直循环到数组的最后一位,所以输出-1.
#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;
}