2013年计算机二级C语言上机题库二十_第2页

考试站(www.examzz.com)   【考试站:中国教育考试第一门户】   2013年4月25日
  改错题
  N个有序整数数列已放在一维数组中,给定下列程序中,函数FUN的功能是:利用拆半查找算法查找整数M在数组中的位置。若找到,则返回其下标值:反之,则返回-1。
  拆半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(lowhigh,查找结束。
  请改正程序中的错误,使它能得出正确结果。
  注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!
  试题程序:#include
  #define N 10
  /********found********/
  void fun(int a[], int m)
  {
  int low = 0, high = N-1, mid;
  while (low <= high)
  {
  mid = (low+high)/2;
  if (m < a[mid])
  high = mid-1;
  /********found********/
  else
  if (m >= a[mid])
  low = mid+1;
  else
  return(mid);
  }
  return (-1);
  }
  main()
  {
  int i, a[N] = {-3, 4, 7, 9, 13, 45, 67, 89, 100, 180}, k, m;
  printf("a êy×é?Dμ?êy?Yè???:");
  for (i=0; i  printf("%d,", a[i]);
  printf("Enter m:");
  scanf("%d", &m);
  k = fun(a, m);
  if (k >= 0)
  printf("m=%d,index=%d\n", m, k);
  else
  printf("Not be found!\n");
  }
  第1处:void fun(int a[],int m)应改为int fun(int a[],int m)
  第2处:if (m>=a[mid])应改为if(m>a[mid])

相关文章