用c语言输⼊10个整数(通过指针引⽤数组),实现两个函数,分别求这10个整数的平均值、中位数(数组名作为函数 参数、通过指针引⽤数组),最后实现⼀个求平均值、中位数的通⽤函数(指向函数的指针),要求实现过程中使 ⽤指针。
时间: 2024-03-05 22:53:08 浏览: 59
好的,我会尽力解答。这是一个比较基础的C语言问题。
首先,我们定义一个函数来计算给定数组的平均值,代码如下:
```c
double calculate_average(int *arr, int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
}
return (double) sum / n;
}
```
这个函数接受一个整型指针和一个整数作为参数,分别表示指向数组的指针和数组的大小。函数内部使用一个循环来遍历整个数组,并将所有元素的和加起来。最后,我们将总和除以数组大小并返回这个值。
接下来,我们定义一个函数来计算给定数组的中位数,代码如下:
```c
double calculate_median(int *arr, int n) {
int sorted_arr[n];
memcpy(sorted_arr, arr, n * sizeof(int));
qsort(sorted_arr, n, sizeof(int), compare_int);
if (n % 2 == 0) {
return (double) (sorted_arr[n / 2 - 1] + sorted_arr[n / 2]) / 2;
} else {
return (double) sorted_arr[n / 2];
}
}
int compare_int(const void *a, const void *b) {
return (*(int *) a - *(int *) b);
}
```
这个函数也接受一个整型指针和一个整数作为参数,分别表示指向数组的指针和数组的大小。函数内部首先创建一个新的数组,并将原始数组复制到新数组中。然后,我们使用标准库函数`qsort`对新数组进行排序。最后,我们检查数组大小是否为偶数,如果是,则返回中间两个元素的平均值,否则返回中间元素。
最后,我们定义一个通用函数来计算数组的平均值和中位数。这个函数接受一个指向计算平均值的函数和一个指向计算中位数的函数的指针,以及一个整型指针和一个整数作为参数,分别表示指向数组的指针和数组的大小。代码如下:
```c
void calculate(void (*avg_func)(int *, int), void (*median_func)(int *, int), int *arr, int n) {
avg_func(arr, n);
median_func(arr, n);
}
```
这个函数内部首先调用指向计算平均值的函数和指向计算中位数的函数,然后将数组指针和数组大小作为参数传递给这些函数。这样,我们就可以通过调用`calculate`函数来计算任何给定数组的平均值和中位数。
完整代码如下:
阅读全文