ice_camel 发表于 2014-5-15 23:10:31

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;
}

kikiatw 发表于 2014-5-15 23:27:24

          printf("enter a interger:");
                scanf("%d",&m);
下面加一行 getchar();去接收你按下enter 之後的 '\n' 字元, 就可以了

ice_camel 发表于 2014-5-16 18:46:42

kikiatw 发表于 2014-5-15 23:27 static/image/common/back.gif
printf("enter a interger:");
                scanf("%d",&m);
下面加一行 getchar();去接 ...

懂了,非常感谢!
页: [1]
查看完整版本: C语言,求鱼油帮忙!