你的scanf要赋值的数前没有加“&”
附正确答案
#include
using namespace std;
int main()
{
int low=0,high=8,mid;
int x,a[9],i;
for(int i=0;i<9;i++)
scanf("%d",&a[i]);
scanf("%d",&x);
mid=(low+high)/2;
while(x!=a[mid] && low { if(a[mid] low=mid+1; else high=mid-1; mid=(low+high)/2; } if(x==a[mid]) printf("it is at%d",mid); else printf("no this data!"); }
#include
#include
int halfSearchWithRecursive(int goal,int *num,int left,int right);
int halfSearchWithCircle(int goal,int *num,int left,int right);
int main(int argc, char **argv)
{
int num[10];
int p=0;
while(p<10)
scanf("%d",num+p++);
int goal;
scanf("%d",&goal);
//int locate=halfSearchWithRecursive(int goal,int *num,int left,int right);
int locate=halfSearchWithCircle(goal,num,0,10);
if(locate==-1)
printf("no this data\n");
else
printf("%d\n",locate);
}
int halfSearchWithCircle(int goal,int *num,int left,int right)
{
int middle;
while(left
middle=(left+right)/2;
if(num[middle]==goal)
return middle;
else if(num[middle]>goal)
right=middle-1;
else
left=middle+1;
}
return -1;
}
int halfSearchWithRecursive(int goal,int *num,int left,int right)
{
if(left==right)
return -1;
int middle=(left+right)/2;
if(num[middle]>goal)
return halfSearchWithRecursive(goal,num,left,middle-1);
else if(num[middle]
else if(num[middle]==goal)
return middle;
}
//int qq=936250734;
把while里面的x!=a[mid]放到循环求mid之前
scanf那里应该是&a[i],你少了个&