欢迎光临
我们一直在努力

学习c语言第33天 求函数素数sizeof,代码不通过到底哪错了

int sz=sizeof(arr)/sizeof(arr[0]);这个只能在main里,

因为数组传参时传的是数组首元素的地址,而不是整个数组,

所以在函数内计算int sz是不靠谱的。

我这个代码到底错在哪了?

#include<stdio.h>
//求函数素数
int binary_search(int arr[],int k,int sz)
{
int left=0;
int right=sz-1;

while(left<=right)
{
int mid=left+(right-left)/2;
if(arr[mid]<k)
{
left=mid+1;
}
else if(arr[mid]>k)
{
right=mid-1;
}
else
{
return mid;//找的返回下标
}
}
return -1;//不是0,是因为如果找的是1返回的是0值, 容易误解
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
//0,1,2,3
int k=7;
int sz=sizeof(arr)/sizeof(arr[0]);
int ret=binary_search(arr,k,sz) ;//需要这三个值
if (ret==-1)
printf("找不到");
else
printf("找到了,下标:%d",ret);
return 0;
}

赞(0)
未经允许不得转载:171主机测评 » 学习c语言第33天 求函数素数sizeof,代码不通过到底哪错了
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址