打印Input the number to search:以后没等输入就自动结束运行了
#include <stdio.h>
#include <stdlib.h>
#define SIZE 20
int Init(int * nums, int * size);
void Ask(int * target);
int search(int * nums, int size, int target);
int main()
{
int * nums_1, size_1, target_1=0;
printf("%d\n",Init(nums_1,&size_1));
Ask(&target_1);
search(nums_1, size_1, target_1);
}
int Init(int * nums, int * size){
int i = 0, status = 0,num;
nums = (int*)malloc(sizeof(int) * SIZE);
if(nums == NULL)
status = 1;
printf("Input numbers in the array(<=20),you must input smaller numbers first:(press q to quit)");
while(scanf("%d",&num) != EOF){
nums[i] = num;
i++;
if(i==20)
break;
}
*size = i;
return status;
}
void Ask(int * target){
int num;
printf("Input the number to search:");
scanf("%d", &num);
*target = num;
}
int search(int * nums, int size, int target){
int left = 0, right = size-1, middle;
middle = left + (right - left) / 2; //防止溢出
while(right >= left){
if(target == nums[middle]){
printf("%d", middle);
return 0;
}
else if(target < nums[middle])
right = middle - 1;
else if(target > nums[middle])
left = middle + 1;
}
printf("%d",right+1);
return 0;
}