我这个c语言的程序运行结果不正确,请高手指点。

个人认为这个程序是对的,当我输入7时可以在数组中找到,但是当我输入其他的值(如:9,12,18………)时,结果都显示“notexist!”,请问是怎么回事?#includ... 个人认为这个程序是对的,当我输入7时可以在数组中找到,但是当我输入其他的值(如:9,12,18………)时,结果都显示“not exist!”,请问是怎么回事?

#include<stdio.h>
void main()
{
int a[10]={7,9,12,18,21,25,33,39,45,60};
int x,left=0,mid,right=0,flag=0;
printf("input a number to be serched:");
scanf("%d",&x);
if(x>=a[left] && x<=a[right])
while(!flag && left<=right)
{
mid=(left+right)/2;
if(a[mid]==x)
flag=1;
else if(x>a[mid])
left=mid+1;
else
right=mid-1;
}
if(flag==1)
printf("%4d is found,it's at %4d.\n",x,mid);
else
printf("not exist!\n");
}
展开
 我来答
百度网友6fe74e2
2013-05-11 · TA获得超过6594个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:288万
展开全部

#include<stdio.h>
void main()
{
 int a[10]={7,9,12,18,21,25,33,39,45,60};

 //right=0;应该是初始化为9,left最左边,right最右边

 int x,left=0,mid,right=9,flag=0;
 printf("input a number to be serched:");
 scanf("%d",&x);
 if(x>=a[left] && x<=a[right])
  while(!flag && left<=right)
  {
   mid=(left+right)/2;
   if(a[mid]==x)
    flag=1;
   else if(x>a[mid])
    left=mid+1;
   else
    right=mid-1;
  }
  if(flag==1)
   printf("%4d is found,it's at %4d.\n",x,mid);
  else
   printf("not exist!\n");

}

追问
我用的是vc++6.0运行的,是不是我的软件有问题?
追答
不是啊,有改动的
right初始化为9
你是从两头到中间找嘛,是吧
两头就是left=0; right=9因为你的数组是10个元素,最右边的位置是9
小毛豆sam
2013-05-11 · TA获得超过1228个赞
知道答主
回答量:179
采纳率:0%
帮助的人:151万
展开全部
当然了,你一开始left和right都是0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式