#include
main()
{
int s;
int a[10]={1,3,6,8,12,16,19,20,45,89};
scanf("%d",&s);
int o=0,p=9,q;
while(o<=p){
q=(o+p)/2;
if(s>a[q])
o=q+1;
else if(s p=q-1;
else if(s==a[q]){
printf("%d\t%d\n",q,a[q]);
break;
}
}
if(o>p)
printf("NOT FOUND!\n");
}
如图所示,(1)q在定义时不需要赋值,多余了。(2)if语句里,大于,等于,小于三种情况都有了,没有第四种情况了,所以最后的else不会运行了。(3)判断没有的情况是o大于p了,说明都数据都比较完一圈了,还没有结果。
望采纳。。。。。。
#include
main(){
int s;
int a[10]={1,3,6,8,12,16,19,20,45,89};
scanf("%d",&s);
int o=0,p=9,q;
while(o<=p){
q=(o+p)/2;
if(s>a[q])
o=q+1;
else if(s p=q-1;
else{
printf("%d\t%d\n",q,a[q]);
return 0;//已经找到,直接返回
}
}
printf("NOT FOUND!\n");//啥都没找到 输出not found
return 0;
}