|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
下面二分查找,第二轮查找时, printf("continue or not?(Y/N):"); 这行总是执行两次,
即输出continue or not?(Y/N):continue or not?(Y/N):
而不是continue or not?(Y/N):
请问问题出在哪里,应该怎么避免呢?
//二分查找,数组实现
#include<stdio.h>
int main(){
int a[15];
int i,m,flag=1,front,rear,mid;
char c;
for(i=0;i<15;i++)
a[i]=2*i+1;
while(flag){ //多轮查找
front=0;
rear=14;
printf("enter a interger:");
scanf("%d",&m);
while(rear-front>1){
mid=(front+rear)/2;
if(a[mid]==m){
printf("a[%d]=%d\n",mid,m);
break;
}
else if(a[mid]>m)
rear=mid;
else
front=mid;
}
if(rear-front<=1)
printf("m is not exists in the array!\n");
do{
printf("continue or not?(Y/N):");
scanf("%c",&c);
if(c=='N'||c=='n')
flag=0;
}while(c!='Y'&&c!='y'&&c!='N'&&c!='n');
}
return 0;
}
|
|