我想按照標題中所述的方式引入我的程序的二進制搜索功能。但不斷得到兩個我不知道如何解決的錯誤。定義數組的錯誤
這是編譯錯誤,我得到了我的代碼:
: expected expression before '{' token
array[size]={1,3,6,8,12,13,16};
^
upg10.8.c: In function 'binarySearch':
upg10.8.c:55:7: warning: control reaches end of non-void function [-Wreturn-
type]
}
^
任何想法,什麼是在這兩種情況導致的嗎?
你可以找到下面的代碼:
#include <stdio.h>
#include <stdlib.h>
int binarySearch(int n, int array[], int search);
int main(void){
int search, size=7, array[size], middle;
array[size]={1,3,6,8,12,13,16};
printf("input search number:\n");
scanf("%d", &search);
middle = binarySearch(size, array, search);
if(middle ==-1){
printf("There is no index corresponding to that search number");
}
else{
printf("Index %d for Search%d", middle, search);
}
return 0;
}
int binarySearch(int n, int array[], int search){
int first =0;
int last = n-1;
int middle= (first+last)/2;
while(first<=last){
if(array[middle]<search)
first= middle +1;
else if(array[middle]==search){
return search;
}
else
last = middle -1;
middle = (first +last)/2;
return middle;
break;
}
if(array[first]>array[last])
return -1;
}
如果你想聲明一個數組的初始值,那麼你必須在它的聲明中這樣做。在其他地方,您只能分配給單個元素,而不能分配給整個數組。此外,假設控制在binarySearch()函數中傳遞出'while'循環。如果在這種情況下你可以確定'array [first]> array [last]',那麼你應該*無條件地*返回'-1'。否則,您必須在該條件不成立的情況下指定返回值。 –
'array [size] = {1,3,6,8,12,13,16};'在C中沒有意義。你想通過這個做什麼? – AnT