更加完整的解決方案,教程里的不夠完整。
//教程里的解決方案不夠完整,當數組中與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;? ??
}