【发布时间】: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