【问题标题】:errors on compiler id returned 1 exit status编译器 id 上的错误返回 1 个退出状态
【发布时间】:2018-04-16 09:38:16
【问题描述】:

所以我是 c 新手,我试图编写一个函数来查找数组的中值然后显示它。我收到错误说 id 返回 1 退出状态和未定义的显示中位数参考。我试图查找它们,但没有一个帖子适用于此。有人可以看看并告诉我有什么问题吗?(这段代码还有更多内容,但我只是发布了我遇到错误的部分)

   #include <stdio.h>
  #define MAX 10

 void getdata(int array[]);
   int displaylargest(int array[]);
   int displaysmallest(int array[]);
   int displayaverage(int array[]);
   int displayrange(int array[]);
   int displaymedian(int array[]);

    void displaydata(int array[]);





    int main ()
      {

       int array[MAX];
       int largest;
       int smallest;
       int average;
       int range;
       int median;


          printf("\nEnter ten numbers \n\n");

           getdata(array);

           displaydata(array );


           largest=displaylargest( array);
               printf("\nThe  largest %d\n", largest);

             smallest=displaysmallest( array);
                printf("\nThe smallest is %d\n", smallest);

            average=displayaverage(array);
             printf("\nThe average is %d\n", average);

            range=displayrange(array);
            printf("\nThe range is %d\n", range);

            median=displaymedian(array);
            printf("\nThe median is %d\n", median);
     return 0;
  }

 void getdata(int array[])

  {
        int x;
             printf ("Enter a number\n ",x+1);
        for(x=0;x<MAX;x++)

              scanf ("%d",&array[x]);

    }

     int displaylargest(int array[])
    {
         int x, largest=array[0];


        for (x=0; x<MAX; x++)
       {
         if (array[x]>largest)

           largest=array[x];

       }


        return(largest);


    }

   int displaysmallest(int array[])


    {

        int x, smallest=array[0];

        for (x=0; x<MAX; x++)
       {
         if (array[x]<smallest)

           smallest=array[x];

       }


        return(smallest);


    }


                int displayaverage(int array[])

    {
        int x;
        int sum=0;
        int average;

            for (x=0; x<MAX; x++)
        {
        sum+=array[x];  
        }
        {
            average=sum/MAX;    
        }




        return(average);

    }
    int displayrange(int array[])
    {

        int x;
        int range;
        int largest=array[0];
        int smallest=array[0];
        for (x=1; x <MAX; x++)
        {

         if (array[x] < smallest) smallest = array[x];
         if (largest < array[x])largest = array[x]; 

        }

         range=largest-smallest;
         return range;

    }


    int median(int array[]) {
int temp;
int median;
int x, y;
// the following two loops sort the array x in ascending order
for(x=0; x<MAX-1; x++) {
    for(y=x+1; y<MAX; y++) {
        if(array[y] < array[x]) {
            // swap elements
            temp = array[x];
            array[x] = array[y];
            array[y] = temp;
        }
    }
}

if(MAX%2==0) {
    // if there is an even number of elements, return mean of the two elements in the middle
    median=(array[MAX/2] + array[MAX/2 - 1]) / 2.0;
  return median;
} else {
    // else return the element in the middle
   median= array[MAX/2];
    return median;
}
 }


       void displaydata(int array[])
      {

       int x;
     for(x=0; x<MAX; x++)
    {
    printf("%d, ",array[x]);

       }
    }

【问题讨论】:

  • 我 99% 确定是 ld,而不是 id,返回了 1 个退出状态。
  • 您的displaymedian 函数在哪里?链接器也不知道。
  • 这个代码的一个问题是你不能在 C 中的其他函数中定义函数。我很惊讶它甚至抱怨缺少 @ 987654325@函数。
  • 我刚刚注意到您说“(这段代码还有更多内容)”但是如果您希望我们帮助您解决编译器错误,我们需要查看整个程序,因为问题出在您认为不相关且未向我们展示的代码中,这种情况很常见。
  • 请帮我们(以及您自己)一个忙,并正确格式化您的代码。这只是可读的。

标签: c arrays linker-errors undefined-reference median


【解决方案1】:

您调用了一个名为 displaymedian 的函数,但在您的代码中没有具有该名称的函数,但有一个名为 median 的函数。

所以只要改变:

int median(int array[])

到:

int displaymedian(int array[])

通过此更正,您的程序编译(尽管有警告)并且似乎运行正确,但我没有检查计算是否真的正确。

【讨论】:

    猜你喜欢
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多