F.hacker 2021-08-06 08:40 采纳率: 60%
浏览 37
已结题

代码运行后查找出无效值,求纠错一下



```c
#include<stdio.h>
#include<malloc.h>
 int binary_search(int p[],int k,int sz)
      {
          
          int left=0;
          
          int right=sz-1;
             
             while(left<=right)
             {
                 
                 int mid=(left+right)/2;
                 if(p[mid]<k)
                 {
                     left=mid+1;
                     //return(-1);
                 }
                 else if(p[mid]>k)
                 {
                     right=mid-1;
                     //return(-1);
                 }
                 else if(p[mid]=k)
                 {
                     return(mid);
                 }
             }
          return(-1);
          
      }
     
      
          
      
      int main(void)
      {
          int len,i,k;
          int *p;
          while(1){
          
              printf("请输入你要存放的元素个数。\n");
         scanf("%d",&len); 
         p=(int*)malloc(sizeof(int)*len);
         printf("注意:数组为有序数组.\n");
         printf("请输入你要存储的元素值。\n");
         for(i=0;i<len;++i)
         {         
         scanf(" %d",&p[i]);    
      }
      fflush(stdin);
          //int sz=sizeof(p)/sizeof(p[0]);
      printf("请输入要查找的元素值.\n");
          scanf("%d",&k);
              int sz=sizeof(p)/sizeof(p[0]);
          int binary_search(int p[],int k,int sz);
           int ret=binary_search(p,k,sz);
          
          if(ret==-1)
          {
              printf("找不到指定数字\n");
          }
          else
          {
              printf("找到了,下标是 %d\n",ret);
              
          }
    }
          return 0;
      }

```

展开全部

  • 写回答

2条回答 默认 最新

  • 八云黧 2021-08-06 09:01
    关注

    代码有些问题
    1.binary_search内第三个代码段的判断条件应该使用两个等号else if (p[mid] == k)
    2.sz无法正常计算数组长度,指针不保存长度信息,只有数组变量才可以用sizeof求长度,请使用int ret = binary_search(p, k, len);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    F.hacker 2021-08-06 09:07

    特别感谢

    回复
    F.hacker 2021-08-06 09:07

    特别感谢

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 8月13日
  • 已采纳回答 8月6日
  • 创建了问题 8月6日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部