| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 578 人关注过本帖
标题:循环问题
只看楼主 加入收藏
夏天的格子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-7-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
循环问题
折半法
#include<stdio.h>
#define N 5

int main()
{
 int a[N],x,y,i,begin,end,flag; char c;
 printf("input %d numbers:\n",N);
 for(i=0;i<N;i++)
  scanf("%d",&a[i]);
 flag=1;
while(flag)
{
printf("please enter the number:\n");
 scanf("%d",&x);
  begin=0;end=N-1;
 if(x>a[0]||x<a[N-1])
 printf("error");
 else
 while(begin<=end)
 {
  i = (begin+end) / 2;
  if (x==a[i])
  {
   y=i+1;
   printf("%d",y);
   break;
  }
  else
   if (x>a[i])
    end=i-1;
   else
    begin=i+1;
 }
 printf("\ncontinue?y/n\n");
 scanf("%c",&c);
 if(c!='y') flag=0;
}
 getch();
 return 0;
}
为什么
scanf("%c",&c);
if(c!='y') flag=0;
不起作用?不论输入什么显示窗口都关闭了?
搜索更多相关主题的帖子: 循环 
2009-07-14 14:47
himpo
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:192
专家分:123
注 册:2008-5-16
收藏
得分:5 
和有个帖子的问题一样...
while(getchar()!='\n');  //这里加上这句,清空缓冲区.
scanf("%c",&c);
2009-07-14 15:07
夏天的格子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-7-6
收藏
得分:0 
回复 2楼 himpo
怎么还是不行?
2009-07-14 17:24
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:15 
1,缓冲流没清除;
2,算法有误,有些数字根本算不出;
3,格式太糟糕。

把你的代码修改如下,请您参考:
程序代码:
#include<stdio.h>
#define N 5

int main()
{
    int a[N], x, y, i, begin, end, flag;
    char c;
    printf("input %d numbers:\n", N);
    for (i = 0; i < N; i++)
        scanf("%d", &a[i]);
    flag = 1;
    while (flag) 
    {
        printf("please enter the number:\n");
        scanf("%d", &x);
        begin = 0;
        end = N - 1;
        if (x < a[0] || x > a[N - 1])
            printf("error");
        else
            while (begin <= end) 
            {
                i = (begin + end) / 2;
                if (x == a[i]) 
                {
                    y = i + 1;
                    printf("%d", y);
                    break;
                } 
                else if (x > a[i])
                    begin=i;
                else
                    end = i;
            }
        getchar();
        printf("\ncontinue?y/n\n");
        scanf("%c", &c);
        if (c != 'y')
            flag = 0;
    }
    //getch();
    return 0;
}
2009-07-14 17:41
夏天的格子
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-7-6
收藏
得分:0 
回复 4楼 广陵绝唱
谢谢!可以说下缓冲流是怎么回事么?
2009-07-14 20:20
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 5楼 夏天的格子
可以去百度搜索一下。
2009-07-14 21:07
快速回复:循环问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022608 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved