如标题所述,我想在我的程序中引入二分查找功能。但是不断收到两个错误,我不知道如何解决。
这是我的代码的编译错误:
: 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;
}
最佳答案
删除 array[size]={1,3,6,8,12,13,16};
。声明后不能将值初始化为数组。但仅限于减速时。正确的代码是
int array[]={1,3,6,8,12,13,16};
同时将大小声明为宏常量。我认为它更好。看起来像
#define size 7
其他一切看起来都很好!!
关于c - 定义数组时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46815411/