学习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;
}
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)