| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 544 人关注过本帖
标题:关于一个数组的问题
取消只看楼主 加入收藏
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:4 
关于一个数组的问题
#include<stdio.h>
#include<stdlib.h>

int main()
{
    int f;
    int a[10]={12,13,14,15,16,17,18,19,20,21};  //定义一个数组
    int mid1,low,top;                //定义中间序号,最低序号,最高序号
    low=0;
    top=9;

    printf("请输入查找的数值!\n");
    scanf("%d",&f);

    while(low<=top)           //循环判断
    {
        mid1=(low+top)/2;
        if(f==a[mid1])
        {
            printf("%d\n",mid1);
            exit(0);
        }
        else if(f>a[mid1])
            low=mid1;
        else if(f<a[mid1])
            top=mid1;
    }
    printf("请输入12-21的整数!\n");//为什么当我输入23的时候不出现printf语句呢?
 return 0;
}
搜索更多相关主题的帖子: top include 
2012-07-26 21:33
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
之所以用这个主要是为了有个判断语句,但是仔细想了下,这个是个死循环,也就是跳不出来了.....哎,改成f>=a[0]&&f<=a[9]但是发现输入21的时候无效了
2012-07-26 22:29
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
3楼说的low=mid+1,top=mid-1我试过了,还是输不出printf语句,因为上一个语句f=a[mid]这个已经判断过了,所以后面当f>a[mid]的时候,加一个位或者不加,似乎没有什么意义
2012-07-26 22:37
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
始终都是low<=top
2012-07-26 22:38
aglence
Rank: 1
等 级:新手上路
帖 子:63
专家分:2
注 册:2012-7-6
收藏
得分:0 
明白了,+1的话才能保证数值超过数组元素值得时候,跳得出循环,同理-1一样,感谢
2012-07-27 10:57
快速回复:关于一个数组的问题
数据加载中...
 
   



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

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