更加完整的解決方案,教程里的不夠完整。
//教程里的解決方案不夠完整,當(dāng)數(shù)組中與value的值相等的元素存在多個(gè)時(shí),程序總是會(huì)輸出其中的第一個(gè)元素的下標(biāo),其后仍有與value相同的值則直接跳過(guò),不會(huì)輸出。
#include <stdio.h>
int getIndex(int arr[5],int value)
{
? ? int i;
? ? int temp=0;? ? ? //用來(lái)承載第二個(gè)for循環(huán)中arr[i] != value的判斷次數(shù)。
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? if(arr[i]==value)
? ? ? ? {
? ? ? ? ? ? printf("存在,下標(biāo)為");
? ? ? ? ? ? break;? ? ? //當(dāng)arr[i] == value的結(jié)果時(shí),證明value的值能在arr數(shù)組中找到,立即退出循環(huán)。
? ? ? ? }
? ? }
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? if(arr[i]==value)
? ? ? ? {
? ? ? ? ? ? printf(" ··· %d",i);? ? ? //輸出當(dāng)arr[i] == value時(shí)i的數(shù)字。即arr數(shù)組中的某個(gè)元素等于value時(shí),該元素的下標(biāo)。
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? temp++;? ? ? //累加arr[i] != value的判斷次數(shù)。當(dāng)temp==arr數(shù)組的總長(zhǎng)度時(shí),代表arr數(shù)組中沒(méi)有一個(gè)元素==value,即value在arr數(shù)組中不存在。
? ? ? ? }
? ? }
? ? if(temp==5)
? ? {
? ? ? ? printf("不存在。\n");
? ? }
? ? else
? ? {
? ? ? ? printf("。");
? ? }
}
int main()
{
? ? int arr[5]={3,12,9,8,6};? ? ? //可更改此數(shù)組的元素,觀察運(yùn)行結(jié)果有沒(méi)有錯(cuò)誤,即使相同的元素也能正確輸出結(jié)果。
? ? int value=8;? ? ? ? ? ? ? ? ? //可更改此數(shù)組的元素,觀察運(yùn)行結(jié)果有沒(méi)有錯(cuò)誤。
? ? printf("%d在數(shù)組中",value);
? ? getIndex(arr,value);? ? ? //傳遞arr[]以及value的參數(shù)。
? ? return 0;? ??
}