C语言,求鱼油帮忙!
下面二分查找,第二轮查找时, 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;
int i,m,flag=1,front,rear,mid;
char c;
for(i=0;i<15;i++)
a=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==m){
printf("a[%d]=%d\n",mid,m);
break;
}
else if(a>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;
}
printf("enter a interger:");
scanf("%d",&m);
下面加一行 getchar();去接收你按下enter 之後的 '\n' 字元, 就可以了
kikiatw 发表于 2014-5-15 23:27 static/image/common/back.gif
printf("enter a interger:");
scanf("%d",&m);
下面加一行 getchar();去接 ...
懂了,非常感谢!
页:
[1]