更加完整的解决方案,教程里的不够完整。
//教程里的解决方案不够完整,当数组中与value的值相等的元素存在多个时,程序总是会输出其中的第一个元素的下标,其后仍有与value相同的值则直接跳过,不会输出。
#include <stdio.h>
int getIndex(int arr[5],int value)
{
int i;
int temp=0; //用来承载第二个for循环中arr[i] != value的判断次数。
for(i=0;i<5;i++)
{
if(arr[i]==value)
{
printf("存在,下标为");
break; //当arr[i] == value的结果时,证明value的值能在arr数组中找到,立即退出循环。
}
}
for(i=0;i<5;i++)
{
if(arr[i]==value)
{
printf(" ··· %d",i); //输出当arr[i] == value时i的数字。即arr数组中的某个元素等于value时,该元素的下标。
}
else
{
temp++; //累加arr[i] != value的判断次数。当temp==arr数组的总长度时,代表arr数组中没有一个元素==value,即value在arr数组中不存在。
}
}
if(temp==5)
{
printf("不存在。\n");
}
else
{
printf("。");
}
}
int main()
{
int arr[5]={3,12,9,8,6}; //可更改此数组的元素,观察运行结果有没有错误,即使相同的元素也能正确输出结果。
int value=8; //可更改此数组的元素,观察运行结果有没有错误。
printf("%d在数组中",value);
getIndex(arr,value); //传递arr[]以及value的参数。
return 0;
}