读书人

!为什么小弟我这个程序不关照到还是没

发布时间: 2012-06-06 16:44:11 作者: rapoo

请教高手!为什么我这个程序不关照到还是没找到,返回都是-1
#include <stdio.h>
#define MAX 20
typedef struct{
int key;
}NodeType,SeqList[MAX+1];
int BinSearch(SeqList R,int n,int k)
{
int low=1,high=n,mid;
while(low<=high)
{
mid=(low+high)/2;
if(R[mid].key==k)
return mid;
else if(R[mid].key>k)
high=mid-1;
else
low=mid+1;
}
return -1;
}
main()
{ int a,i,m;
SeqList n[5];
printf("\nplease input the data:\n");
for(i=0;i<5;i++)
{
scanf("%d",&n);
}
printf("\nplease input the data what you want to find:\n");
scanf("%d",&m);
a=BinSearch(n,5,m);
printf("\nthe data you want to find in:\n");
printf("%d",a);
getch();
}
为什么a的值总是-1,帮忙改一下,谢谢!

[解决办法]
#include <stdio.h>
#include<conio.h>
#define MAX 20
typedef struct{
int key;
}NodeType;
int BinSearch(NodeType R[],int n,int k)
{
int low=0,high=n-1,mid;
while(low<=high)
{
mid=(low+high)/2;
if(R[mid].key==k)
return mid;
else if(R[mid].key>k)
high=mid-1;
else
low=mid+1;
}
return -1;
}
main()
{ int a,i,m;
NodeType n[MAX];
printf("\nplease input the data:\n");
for(i=0;i<5;i++)
{
scanf("%d",&n[i]);
}
printf("\nplease input the data what you want to find:\n");
scanf("%d",&m);
a=BinSearch(n,5,m);
printf("\nthe data you want to find in:\n");
printf("%d",a);
getch();
}
这个是可以运行的,你看看吧。
[解决办法]
1:二分搜索要求数组有序
2:数组下标初始化错误int low=1,high=n,
3:输出-1就是没找到
4:typedef是定义类型typedef struct{...}NodeType,SeqList[MAX+1];
5:单步调试一下!
[解决办法]

探讨
1:二分搜索要求数组有序
2:数组下标初始化错误int low=1,high=n,
3:输出-1就是没找到
4:typedef是定义类型typedef struct{...}NodeType,SeqList[MAX+1];
5:单步调试一下!

[解决办法]
C/C++ code
#include <stdio.h>#define MAX 20typedef struct{  int key;}NodeType,SeqList[MAX+1];int BinSearch(SeqList R,int n,int k){  int low=1,high=n,mid;  while(low<=high)  {  mid=(low+high)/2;  if(R[mid].key==k)  return mid;  else if(R[mid].key>k)  high=mid-1;  else  low=mid+1;  }  return -1;}main(){ int a,i,m;  SeqList n[5];  printf("\nplease input the data:\n");  for(i=0;i<5;i++)  {  scanf("%d",&n);  }  printf("\nplease input the data what you want to find:\n");  scanf("%d",&m);  a=BinSearch(n,5,m);  printf("\nthe data you want to find in:\n");  printf("%d",a);  getch();}
[解决办法]
SeqList n[5];//前面定义调用函数都写对了int BinSearch(SeqList R,int n,int k)
后面在main函数定义就错了 正确格式 SeqList n
for(i=0;i<5;i++)
{scanf("%d",&n);}
我不知道你这句想干嘛?显然错误//改为scanf("%d",&n[i].key);
getch();
在这里干嘛?没事写啊
改完之后你求的结果为数组下标值;我把源程序给你
#include <stdio.h>
#define MAX 20
typedef struct{
int key;
}NodeType,SeqList[MAX+1];
int BinSearch(SeqList R,int n,int k)
{
int low=0,high=n-1,mid;


while(low<=high)
{
mid=(low+high)/2;
if(R[mid].key==k)
return mid;
else if(R[mid].key>k)
high=mid-1;
else
low=mid+1;
}
return -1;
}
main()
{ int a,i,m;
SeqList n;
printf("\nplease input the data:\n");
for(i=0;i<5;i++)
{
scanf("%d",&n[i].key);
}
printf("\nplease input the data what you want to find:\n");
scanf("%d",&m);
a=BinSearch(n,5,m);
printf("\nthe data you want to find in:\n");
printf("%d",a);
}问题解决 我要分
[解决办法]

C/C++ code
#include <stdio.h>#define MAX 20typedef struct{  int key;}NodeType,SeqList[MAX+1];int BinSearch(SeqList* R,int n,int k){  int low=1,high=n,mid;  while(low<=high)  {  mid=(low+high)/2;  if(R[mid]->key==k)  return mid;  else if(R[mid]->key>k)  high=mid-1;  else  low=mid+1;  }  return -1;}void main(){     int a,i,m;    SeqList n[5];    printf("\nplease input the data:\n");    for(i=0;i<5;i++)    {    scanf("%d",&n[i]->key);    }    printf("\nplease input the data what you want to find:\n");    scanf("%d",&m);    a=BinSearch(n,5,m);    printf("\nthe data you want to find in:\n");    printf("%d",a);    getch();} 

读书人网 >C语言

热点推荐