鱼C论坛

 找回密码
 立即注册
查看: 1765|回复: 2

C语言,求鱼油帮忙!

[复制链接]
发表于 2014-5-15 23:10:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-5-15 23:27:24 | 显示全部楼层
          printf("enter a interger:");
                scanf("%d",&m);
下面加一行 getchar();  去接收你按下enter 之後的 '\n' 字元, 就可以了

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-16 18:46:42 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 08:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表