急!一段短的代码 C语言 二分法查找binsearch(T,k),为什么编译通过,却无法运行。
#include<stdio.h>
int i,j;
struct seqlist
{
int key;
}T[10];
void arrangement()
{
int w,u,t;
for(w=1;w<=9;w++)
T[w].key=R[w].key;
for(w=1;w<=9;w++)
for(u=1;u<=9-w;u++)
if(T[u].key>T[u+1].key)
{
t=T[u].key;
T[u].key=T[u+1].key;
T[u+1].key=t;
}
//for(w=1;w<=9;w++)
//printf("%d",T[w]);
}
int binsearch(seqlist T[],int k)
{
int low=1,high=9,mid;
while(low<=high)
{
mid=(low+high)/2;
if(T[mid].key==k)
return mid;
if(T[mid].key>k)
high=mid-1;
else
low=mid+1;
}
return 0;
}
main()
{
int ,k,t;
printf("请任意输入9个数:\n");
for(int j=1;j!='\n';j++)
scanf("%d",&R[j].key);
arrangement();
printf("请输入你要查找的数:");
scanf("%d",k);
t=binsearch(T,k);
if(t==0)
printf("你所查找的数不存在。\n");
else
printf("你所查找的数的位置是:%d\n",t);
}
[解决办法]
数组的基是0的
冒泡排序还是要再练一下
加断点,单步调试
[解决办法]
能通过编译?
我感觉小问题比较多
首先是这个没定义:struct seqlist R[10]
再者这个int ,k,t;(可能是你粘贴的时候有问题了)?
输入要查找的数的时候scanf("%d",k);忘了带取地址符号。