messiuuuu 2023-10-29 11:38 采纳率: 95.2%
浏览 1
已结题

他总是说我定义的search函数中的left没有被declared,如何解决?(相关搜索:二分搜索)


#include<stdio.h>
int search(int k,int amount[],int length);


int main()
{
    int amount[]={1,2,5,8,9,56};
    int k,r;
    scanf("%d",&k);
    r=search(k,amount,sizeof(amount)/sizeof(amount[0]));
    if(r!=-1){
        printf("%d在%d的位置上",k,r);
    } else{
        printf("不存在那个数");
    }
    return 0;
 } 
 
int search(int k,int amount[],int length)
{
    int ret=-1
    int left=0;
    int right=length-1;
    while(right>left)
    {
        int mid=(right+left)/2;
        if(amount[mid]==k)
        {
            ret=mid;
            break;
        }else if(amount[mid]>k)
        {
            right=mid-1;
         }else
         {
             left=mid+1;
         } 
    }
    return ret;
}

这是一个二分搜索的题目,他总是说我定义的search函数中的left没有在scope被declared,请问这是怎末回事。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-29 14:23
    关注

    【以下回答由 GPT 生成】

    这个问题是因为在search函数中,left变量在while循环内定义,而在循环开始之前它被使用了。

    解决这个问题的方法是将int left=0;的声明移到while循环之前:

    int search(int k, int amount[], int length)
    {
        int ret=-1;
        int left=0; // 将left变量的声明移到while循环之前
        int right=length-1;
        while(right>left)
        {
            int mid=(right+left)/2;
            if(amount[mid]==k)
            {
                ret=mid;
                break;
            }else if(amount[mid]>k)
            {
                right=mid-1;
             }else
             {
                 left=mid+1;
             } 
        }
        return ret;
    }
    

    这样就可以解决变量未定义的问题。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月2日
  • 已采纳回答 12月25日
  • 创建了问题 10月29日

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件