c - 定义数组时出错

标签 c function binary-search

如标题所述,我想在我的程序中引入二分查找功能。但是不断收到两个错误,我不知道如何解决。

这是我的代码的编译错误:

: 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/

相关文章:

c++ - C++中的字符串反转

arrays - 如何创建一个接受字符串并用其他符号替换某些字母的函数

java - LinkedList 和 BinarySearch 的大 O 表示法

c - 为什么我的二分搜索实现找不到最后一个元素?

Python - 创建一个类并使用函数更改它的对象值

algorithm - 二分查找相关的编程难题

c - 如何使用 Lua 中的函数指针和 SWIG 绑定(bind)来调用函数?

c - 发现我使用strcat函数的错误

c - 我怎样才能将一个数字与其他数字进行比较而不用 C 语言将它们全部写出来?

c++ - 带有 istream& 参数 C++ 的函数