gpt4 book ai didi

c - 使用 c 中的函数从排序数组中查找中位数

转载 作者:行者123 更新时间:2023-11-30 14:35:15 25 4
gpt4 key购买 nike

我有一个程序,它从数组中获取整数并打印出最大、最小、平均值和排序列表。我需要一个函数的帮助来找到中位数,然后将其打印出来。另外,我的平均值只显示整数,没有数字,正如我在使用 float 时所想的那样。但找到中值函数是重要的部分。

#include <stdio.h>

#define NUMBERS_SIZE 5

int sum(int numbers[], int count)
{

int sum = 0;

for (int i = 0; i < count; i++)
sum += numbers[i];

return sum;
}


int maximum(int numbers[], int count)
{
int a;


int max = numbers[0];


for (a = 1; a < count; a++)
if (numbers[a] > max)
max = numbers[a];

return max;
}

int minimum(int numbers[], int count)
{
int a;


int min = numbers[0];


for (a = 1; a < count; a++)
if (numbers[a] < min)
min = numbers[a];

return min;
}

int average(int numbers[], int count)
{
float avg;
int sum = 0;

for (int i = 0; i < count; i++)
sum += numbers[i];

avg = sum/count;

return avg;
}

int cmpfunc (const void * a, const void * b) {
return ( *(int*)a - *(int*)b );
}




int main()
{
int numbers[NUMBERS_SIZE];

int n;

float median=0;

for (int i = 0; i < NUMBERS_SIZE; i++)
{
printf("Enter integer: ");
scanf("%i", &numbers[i]);
}

int result3 = sum(numbers, sizeof(numbers) / sizeof(numbers[0]));
printf("The sum is: %i\n", result3);



int count3 = sizeof(numbers)/sizeof(numbers[0]);
printf("Largest number entered is: %d\n", maximum(numbers, count3));

int count1 = sizeof(numbers)/sizeof(numbers[0]);
printf("Smallest number entered is: %d\n", minimum(numbers, count1));

int count4 = sizeof(numbers)/sizeof(numbers[0]);
printf("Average is %d\n", average(numbers, count4));



qsort(numbers, NUMBERS_SIZE, sizeof(int), cmpfunc);

printf("\nSorted: \n");
for( n = 0 ; n < NUMBERS_SIZE; n++ ) {
printf("%d ", numbers[n]);
}


return 0;

}

最佳答案

您的平均值四舍五入为整数值,因为 sumcount 都是整数。然后,在 avg = sum/count 行上,它首先计算 sum/count,四舍五入,然后将其转换为 float 并分配给 avg。您可以通过先将值转换为 float ,然后执行除法来轻松解决此问题:

avg = (float) sum / (float) count;

至于中位数,由于输入数组已排序,因此只需找到长度并索引中间值即可。如果长度是偶数,则取中间两个值的平均值。

关于c - 使用 c 中的函数从排序数组中查找中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58615490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com