2

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

我的问题是编译器说:'arr' undeclared (first use in this function)

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

#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);    
                 } 
}

谢谢 :)

4

3 回答 3

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

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

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

于 2013-07-14T08:53:11.307 回答
2

@Adrian Jandl 说了什么。

还要注意你的循环是错误的两次:

for(number=0; number<200; number++) ...
  1. 数组在 C 中基于零。
  2. 在 number<200时计数,直到 number>=-200 才计数。
于 2013-07-14T08:55:17.060 回答
1

arr 未在 getArray 函数中定义或声明。而且 arr 也不是全局变量。您可以将 arr int main() 函数移动到全局区域。

于 2013-07-14T08:53:29.837 回答