关于##include#的问题,如何解决?

求看一下哪里出错了

#include <stdio.h>
int search(int key,int a[],int len); 
int main()
{
    int k=10;
    int r=(k,amout[],sizeof(amout)/sizeof(amout[0]));
        
    
    return 0;
}

//二分法, 函数, 
int search(int key,int a[],int len)
{   int ret=-1;
    int left=0;
    int right=len-1;
    int middle=(left+right)/2;
//    int k;
    while(right>left){
        if(a[middle]==k){
            ret=middle;
            break;
        }else if(a[middle]<k){
            left=middle+1;
            
        }else{
            right=middle-1;
        }
    }
     
    return ret;
}


题主代码修改如下,改动处见注释,供参考:

#include <stdio.h>
int search(int key,int a[],int len); // 函数声明
int main()
{
    int k=10, amout[] = {1,2,3,5,4,7,10,14,18,19,26};  //漏了数组amout[]定义递增及初始化 修改

    int r=search(k,amout,sizeof(amout)/sizeof(amout[0])); // 修改
    //int r=(k,amout[],sizeof(amout)/sizeof(amout[0]));//函数调用,漏了函数名

    if (r == -1)  //修改 主函数里看搜索结果
        printf("not found!");
    else
        printf("amout[%d] = %d", r, amout[r]);
   
    return 0;
}
 
//二分法, 函数, 
int search(int key,int a[],int len)
{   int ret=-1;
    int left=0;
    int right=len-1;
    //int middle=(left+right)/2;  修改
    //int k;
    while(right>left){
        int middle=(left+right)/2; //此句移动到while()循环内部 修改
        if(a[middle]==key){//if(a[middle]==k)  修改
            ret=middle;
            break;
        }else if(a[middle]<key){ //if(a[middle]<k) 修改
            left=middle+1;
            
        }else{
            right=middle-1;
        }
    }
    return ret;
}

有帮助的话 采纳一下

#include <stdio.h>  

int search(int key, int a[], int len){
  
  int left = 0;
  int right = len - 1; 
  
  while(left <= right) {
    int middle = (left + right) / 2;
    if(a[middle] == key) {
      return middle; 
    }
    else if(a[middle] < key) {
      left = middle + 1; 
    }
    else {
      right = middle - 1;
    }
  }

  return -1; 
}

int main() {

  int amount[] = {1, 2, 3, 4, 5};
  
  int key = 3;
  int index = search(key, amount, sizeof(amount)/sizeof(amount[0]));

  return 0;
}

你的amout[]没有定义哦

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7543424
  • 这篇博客你也可以参考下:用#include的文件中的内容给变量赋值
  • 以下回答由chatgpt基于相关博客总结生成:

    根据提供的信息,看起来你遇到了包含文件的问题。在C++中,要包含其他文件,可以使用#include指令。该指令用于将其他文件的内容插入到当前文件中。

    首先,让我们检查你的代码和错误消息。

    // 这里请粘贴你的代码
    
    // 这里请粘贴错误信息
    

    根据错误消息所描述的问题,有一个可能是在包含文件的过程中出现了循环包含的情况。这会导致在链接阶段时出现错误。

    为了解决这个问题,你可以使用预处理指令的条件编译来避免多次包含同一个文件。在每个包含文件的开始处使用#ifndef和#define指令,然后在文件的末尾使用#endif指令。这样可以确保每个文件只被包含一次。

    #ifndef FILENAME_H    // 使用文件名的唯一标识符替换FILENAME_H
    #define FILENAME_H    // 使用相同的文件名的唯一标识符替换FILENAME_H
    
    // 在这里放置文件的内容
    
    #endif // 结束条件编译
    

    此外,还要注意在头文件中只放置声明而不是定义。例如,函数和变量的定义应该放在源文件中,而不是头文件中。头文件应该只放置声明,例如函数或类的原型。

    如果你的代码中出现了其他错误,我需要更多的信息才能帮助你解决。请提供代码和错误信息的详细信息,以便我可以更好地帮助你解决问题。如果你对此问题不确定,也可以提供更多信息,我将尽力帮助你解决。