-2
#include<stdio.h>
#include<stdlib.h>
double median(int n, int arr[])
{
int i, j, a;
for (i = 0; i < n; ++i)
{
for (j = i + 1; j < n; ++j)
{
if (arr[i] > arr[j])
{
a = arr[i];
arr[i] = arr[j];
arr[j] = a;
}
if (arr[i] > arr[j])
{
a = arr[i];
arr[i] = arr[j];
arr[j] = a;
}
}
}
if (n % 2 == 0)
{
return((arr[n/2] + arr[n/2 - 1])/2.0);
}
else {
return arr[n/2];
}
for (i = 0; i < n; i++)
{
printf("%d\n", arr[i+1]);
}
}
int main()
{
int arr[100] = { 0 };
int i, n, sum = 0;
printf("How many numbers would you like to enter?");
scanf_s("%d", &n);
while (n > 100 || n < 0)
{
printf("Amount of numbers should be less than 0 and more than 100\n");
scanf_s("%d", &n);
}
for (i = 0; i < n; i++)
{
scanf_s("%d", &arr[i + 1]);
}
printf("%f", median(n, arr));
system("pause");
}
看起来好像我的函数不会获得中值函数。该函数很好地排列数组,但找到中值是一个问题。只要函数找到中位数,它就会输出另一个值。任何类型的帮助将不胜感激。查找阵列的中位数
你可能想使用调试器来帮助自己。好有趣! ;-) – alk
'scanf_s(“%d”,&arr [i + 1]);'应该是'scanf_s(“%d”,&arr [i]);',否则你不会扫描到第一个元素,但你在'中位数'函数中使用它。 – mch
side'median()'中的最后一个循环是永远不会被调用的死代码。 – alk