|  | 
 
 
 楼主|
发表于 2017-12-2 09:27:32
|
显示全部楼层 
| 题2折半法找数 遇到问题:第一个数显示为什么是21,还有输入不在数列的数就不能运行了
  
 复制代码#include <stdio.h>
#include <time.h>
int main()
{
    int a[20];
    int i,j,min,max,n,site=0;
  time_t t;
   srand((unsigned) time(&t));
   for(i=0; i<20; i++)
       printf("%d ", a[i]=rand() % 100);
   printf("\n");
  for(i=0;i<20;i++)
    {
        if(max<a[i])
            max=a[i];
        if(min>a[i])
            min=a[i];
    }
    //printf("最大值%d,最小值%d\n",max,min);
    printf("请输入要找查的数:");
    scanf("%d",&n);getchar();
    max=min=a[0];
    i=0;
    i<=20;
    while(max>=min)
    {
        j=(max+min)/2;
        a[i]=j;
        i++;
        if(a[i]>n)
            max=j;
        else if(a[i]<n)
            min=j;
        else if(a[i]==n)
        {
            site=i+1;
            break;
        }
    }
    if(site==0)
        printf("该数不在数列中\n");
    else
        printf("该数在数列中第%d个\n",site);
    return 0;
}
   | 
 |