|

楼主 |
发表于 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;
- }
复制代码
|
|