C中使用二进制搜索算法的简单数字猜谜游戏

C_I*_*ner 2 c arrays function binary-search

这个程序要求我:编写一个与用户进行简单数字猜测的程序.用户想到一个数字,然后回答计算机询问的一系列问题,直到它正确猜出数字为止.

我的问题是编译器说:'arr'未声明(首次在此函数中使用)

到目前为止,这是我的代码:

#include <stdio.h>
#include "strlib.h"
#include "simpio.h"

#define size 200

int binSearch (int num);
void getArray (int arr[]);

main()
{
      printf("Think of a number in the range of 1-200 and I'll guess it.\n");
      int arr[size];
      getArray(arr);
      binSearch(arr);
      getchar();
}

void getArray (int numbers[])
{
      int number;

      for(number=1;number>=200;number++)
      {
                 arr[number]=number;                                 
      }    
}

int binSearch(int num)
{
      int low, high, mid;
      string strReply;

      low=0;
      high=size-1;

      while(low<=high);
      {
                 mid=low+high/2;
                 printf("\nIs the number %d ?\t", mid);
                 strReply= GetLine();
                 if(StringEqual(strReply, "no"))
                 {
                          printf("Is the number less than %d ?\t", mid);
                          if(StringEqual(strReply, "no"))
                          { 
                                     high=mid-1;                         
                          }
                          else if(StringEqual(strReply, "yes"))
                          {
                                     low=mid+1;     
                          }
                 }
                 else if(StringEqual(strReply, "yes"))
                 { 
                          return(mid);     
                 }
                 else
                 {
                          return(-1);    
                 } 
}
Run Code Online (Sandbox Code Playgroud)

谢谢 :)

Adr*_*ndl 6

void getArray (int numbers[])
{
  int number;

  for(number=1;number>=200;number++)
  {
             arr[number]=number;     // this should be numbers[number]                            
  }    
}
Run Code Online (Sandbox Code Playgroud)

您将数组传递给函数,但使用数组就像它是全局的一样.