当前位置: 代码迷 >> C语言 >> 二分查找 实在不知哪错了 请求指教
  详细解决方案

二分查找 实在不知哪错了 请求指教

热度:122   发布时间:2006-07-13 19:37:37.0
二分查找 实在不知哪错了 请求指教

#include<stdio.h>
#define N 15
void main()
{
int found,loca,flag=1,sign=0;
char c;
int a[N],mid,top,low,i;
printf("input:\n");
for(i=0;i<=N-1;i++)
{printf("a[%d]=",i);
scanf("%d",&a[i]);
printf("\n");}
while(flag==1)
{printf("input your number:");
scanf("%d",&found);
if(found<a[0]||found>a[N-1])
loca=-1;
low=0,top=N-1;
whlie(!sign&&(low<top))
{
mid=(top+low)/2;
if(found==a[mid])
{printf("position is %d",mid+1);
sign=1;}
if(found>a[mid])
low=mid+1;
if(found<a[mid])
top=mid-1;
};
if((!sign)||loca==-1)
printf("can not find");
printf("(y/n):");
scanf("%c",&c);
if(c=='n'||c=='Y')
flag=0;}}
提示说缺了;号 找了N久 还是不知道 求高手指教

[此贴子已经被作者于2006-7-13 19:40:08编辑过]

搜索更多相关的解决方案: int  sign  指教  请求  loca  

----------------解决方案--------------------------------------------------------

程序代码:
#include<stdio.h>
#define N 15
void main()
{
int found,loca,flag=1,sign=0;
char c;
int a[N],mid,top,low,i;
printf(\"input:\n\");
for(i=0;i<=N-1;i++)
{printf(\"a[%d]=\",i);
scanf(\"%d\",&a[i]);
printf(\"\n\");}
while(flag==1)
{printf(\"input your number:\");
scanf(\"%d\",&found);
if(found<a[0]||found>a[N-1])
loca=-1;
low=0,top=N-1;
while(!sign&&(low<top))
{
mid=(top+low)/2;
if(found==a[mid])
{printf(\"position is %d\",mid+1);
sign=1;}
if(found>a[mid])
low=mid+1;
if(found<a[mid])
top=mid-1;
};
if((!sign)||loca==-1)
printf(\"can not find\");
printf(\"(y/n):\");
scanf(\"%c\",&c);
if(c=='n'||c=='Y')
flag=0;}}

[此贴子已经被作者于2006-7-13 19:55:35编辑过]


----------------解决方案--------------------------------------------------------

最好写的时候,先打出两个括号,然后再在中间写代码,对应的括号上下对齐。


----------------解决方案--------------------------------------------------------
没少括号啊
----------------解决方案--------------------------------------------------------
还有那个;号 我看过了 没有哪少了啊
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-07-14 09:36:18
jhosua

等 级:新手上路
帖 子:43
专家分:0
注 册:2005-12-31
  得分:0 
还是没用  反正一直都说少了1个;号 怎么办啊 我昨天想了1晚上
----------------解决方案--------------------------------------------------------

晕 怎么还在发帖子啊 没看到我二楼发的嘛 while 拼写错了 ...汗~~ 这么多人在这...///


----------------解决方案--------------------------------------------------------

#include<stdio.h>
#define N 15
void main()
{
int found,loca,flag=1,sign=0;
char c;
int a[N],mid,top,low,i;
printf("input:\n");
for(i=0;i<=N-1;i++)
{printf("a[%d]=",i);
scanf("%d",&a[i]);
printf("\n");}
while(flag==1)
{printf("input your number:");
scanf("%d",&found);
if(found<a[0]||found>a[N-1])
loca=-1;
low=0,top=N-1;
whlie(!sign&&(low<top))
{
mid=(top+low)/2;
if(found==a[mid])
{printf("position is %d",mid+1);
sign=1;}
if(found>a[mid])
low=mid+1;
if(found<a[mid])
top=mid-1;
};\\出错了,看见了吗!!
if((!sign)||loca==-1)
printf("can not find");
printf("(y/n):");
scanf("%c",&c);
getchar();
if(c=='n'||c=='Y')
flag=0;}
}
写程序格式要写的规范一点,这样易于见错和调试


----------------解决方案--------------------------------------------------------
.....................5555555555 感激啊 我英语其实挺好的  怎么会这样啊  谢谢大虾们
----------------解决方案--------------------------------------------------------
  相关解决方案