| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1357 人关注过本帖
标题:一个按大小顺序输入的数组中:查找一个元素的位置。请教高手程序哪里出错
只看楼主 加入收藏
如风似水
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2013-8-7
结帖率:75%
收藏
 问题点数:0 回复次数:11 
一个按大小顺序输入的数组中:查找一个元素的位置。请教高手程序哪里出错
问题:无法输入需要查找的数字:X   请问哪里出错?
#include<stdio.h>
int binsearch(int x, int v[], int n)
{
int low, high, mid;
low = 0;
high = n-1;
while (low <= high)
{
mid = (low+high)/2;
if (x < v[mid])
high = mid + 1;
else if (x > v[mid])
low = mid + 1;
else /* found match */
return mid;
}
return 1;
/* no match */
}
main()
{
    int x,i,c,n;
    int v[10];
    printf("请输入数组:");
    for(i=0;i<100;i++){
    scanf("%d",&v[i]);
    if(v[i]=='\0')
    break;
    }
    printf("请输入要查找的数:");
    scanf("%d",&x);
       c=binsearch(x, v, n);
    if(c==(-1))
    printf("不存在\n");
    else
    printf("在数组中位于%d位\n",c);
   
}   

[ 本帖最后由 如风似水 于 2013-8-8 10:51 编辑 ]
搜索更多相关主题的帖子: include return 元素 
2013-08-08 10:49
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:0 
int v[10];
    printf("请输入数组:");
    for(i=0;i<100;i++){
    scanf("%d",&v[i]);
数组定义10个元素  你输入的有100个元素,越界了。
还有c=binsearch(x, v, n);这个n未看见你初始化????

[ 本帖最后由 wyw19880809 于 2013-8-8 11:05 编辑 ]
2013-08-08 11:04
wyw19880809
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:178
专家分:738
注 册:2013-3-14
收藏
得分:0 
if(v[i]=='\0')  这个条件在你的这个键盘输入函数中没什么用吧...你还不如用\r\n 呢
2013-08-08 11:09
sclqian
Rank: 1
等 级:新手上路
帖 子:6
专家分:7
注 册:2013-8-8
收藏
得分:0 
#include<stdio.h>
int binsearch(int x, int v[10],int n)
{
    int low, high, mid;
    low = 0;
    high = n-1;
    while (low <= high)
    {
        mid = (low+high)/2;
        if (x < v[mid]){
            printf("x=%d hight=%d,mid=%d v[mid]=%d\n",x,high,mid,v[mid]);
            high = mid ;
        }else if (x > v[mid]){
            printf("low=%d ",low);
            low = mid ;
            
        }else {/* found match */
            return mid+1;
        }
    }
    return 1;
/* no match */
}
int main()
{
    int x,i,c;
        int v[10];
    printf("请输入数组:");
    for(i=0;i<10;i++){
        scanf("%d",&v[i]);
        if(v[i]=='\0')
            break;  
    }
    printf("请输入要查找的数:");
    scanf("%d",&x);
    c=binsearch(x, v, 10);
    if(1==c)
        printf("不存在\n");
        else
        printf("在数组中位于%d位\n",c);
   
        
    return 0;
}
我改了一下,可以运行了
2013-08-08 11:34
h13352825861
Rank: 2
来 自:中国
等 级:论坛游民
威 望:1
帖 子:39
专家分:72
注 册:2013-8-8
收藏
得分:0 
回复 4楼 sclqian
试了一下,逻辑运行是错误的!

相信汗水会让未来充满满了阳光!
2013-08-08 14:40
如风似水
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2013-8-7
收藏
得分:0 
回复 4楼 sclqian
运行结果正确?介意来个图么,我这里还是不能正确输入x,按回车键直接运行  X都没输入

徜徉在代码的海洋中,不断汲取营养
2013-08-08 14:47
如风似水
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2013-8-7
收藏
得分:0 
回复 3楼 wyw19880809
‘\n’没啥大关系,改了之后还是不行,n定义10也运行不了,主要是X无法输入

徜徉在代码的海洋中,不断汲取营养
2013-08-08 14:51
如风似水
Rank: 1
等 级:新手上路
帖 子:17
专家分:3
注 册:2013-8-7
收藏
得分:0 
回复 5楼 h13352825861
到底是哪里出问题呢???想不通啊

徜徉在代码的海洋中,不断汲取营养
2013-08-08 14:52
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
include<stdio.h>
int find(int *arr,int low, int hight,int key)
{
    int mid=(hight+low)/2 ;
    if(hight<low) return -1;
    if(arr[mid]!=key)
    {
    if(arr[mid]>key) return find(arr,low,mid-1,key);
    else  return find(arr,mid+1,hight,key);
    }
    else return mid;
}
int main()
{
  int  arr[]={1,2,3,4,5,6,7,9,16};
  printf("数组位置:%d\n", find(arr, 0,  8, 3));
  printf("数组位置:%d\n", find(arr, 0,  8, 7));
  printf("数组位置:%d\n", find(arr, 0,  8, 19));
  return 0;
}

www.qunxingw.wang
2013-08-08 15:44
h13352825861
Rank: 2
来 自:中国
等 级:论坛游民
威 望:1
帖 子:39
专家分:72
注 册:2013-8-8
收藏
得分:0 
你那个太复杂了!错误很多!我重新做了一个简单的,效果一样,你可以测试下!希望能帮到你!!
#include<stdio.h>
void main()
{//主函数的开始
    int x,i,j,n;//定义整型变量
    int v[100];//定义整型数组,并赋初值100
    printf("请输入你要输入数字的个数:\n");
    scanf("%d",&n);
    printf("请输入数组:\n");
    for(i=0;i<n;i++)
    {scanf("%d",&v[i]);}
    printf("请输入要查找的数:\n");
    scanf("%d",&x);
    for(j=0;j<n;++j)
    {if(v[j]==x)
    printf("在数组中位于%d位\n",j+1);}
   
}

相信汗水会让未来充满满了阳光!
2013-08-08 15:44
快速回复:一个按大小顺序输入的数组中:查找一个元素的位置。请教高手程序哪里出 ...
数据加载中...
 
   



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

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