F.hacker 2021-08-06 16: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 17:01
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月14日
  • 已采纳回答 8月6日
  • 创建了问题 8月6日

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)