请用c语言写一个程序,实现计算n个元素组成的整形数组中去掉最大值和最小值的平均值(若有多个相同的最大值最小值,只要去掉一个)
时间: 2023-12-10 14:41:50 浏览: 155
以下是用C语言实现的程序:
```c
#include <stdio.h>
float average(int arr[], int n) {
int max = arr[0], min = arr[0], sum = 0, count = 0;
for (int i = 0; i < n; i++) {
if (arr[i] > max) max = arr[i];
if (arr[i] < min) min = arr[i];
sum += arr[i];
count++;
}
sum -= max + min;
count -= 2;
return (float)sum / count;
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; // 测试数据
int n = sizeof(arr) / sizeof(arr[0]);
printf("去掉最大值和最小值的平均值为:%.2f\n", average(arr, n));
return 0;
}
```
在这个程序中,我们遍历整个数组以确定最大值和最小值,然后计算除去这两个值后的总和并计算平均值。注意,我们需要一个计数器来跟踪除去最大值和最小值后还有多少个元素。最后输出结果。
相关问题
C语言写一个函数,对一个整形数组,求最大值,最小值,平均值
在C语言中,你可以创建三个不同的函数分别来计算整数数组的最大值、最小值和平均值。下面是一个简单的示例:
```c
#include <stdio.h>
#include <limits.h> // 用于获取INT_MAX和INT_MIN
// 函数声明
int find_max(int arr[], int n);
int find_min(int arr[], int n);
double calculate_average(int arr[], int n);
int main() {
int my_array[] = {5, 10, 15, 20, 25};
int array_size = sizeof(my_array) / sizeof(my_array[0]);
int max_value = find_max(my_array, array_size);
int min_value = find_min(my_array, array_size);
double avg_value = calculate_average(my_array, array_size);
printf("Max value: %d\n", max_value);
printf("Min value: %d\n", min_value);
printf("Average value: %.2f\n", avg_value);
return 0;
}
// 函数定义:求最大值
int find_max(int arr[], int n) {
int max = INT_MIN; // 初始假设是最小值
for (int i = 0; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
// 函数定义:求最小值
int find_min(int arr[], int n) {
int min = INT_MAX; // 初始假设是最大值
for (int i = 0; i < n; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}
// 函数定义:计算平均值
double calculate_average(int arr[], int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
}
return (double)sum / n;
}
```
在这个例子中,我们首先定义了主函数`main()`,然后定义了三个辅助函数:`find_max()`、`find_min()`和`calculate_average()`,每个函数都接收一个整数数组和数组长度作为参数,并返回相应的结果。
用C语言实现:求数组中的最大值,最小值和平均值并输出.
在C语言中,你可以通过以下步骤来实现计算数组中的最大值、最小值和平均值:
```c
#include <stdio.h>
#include <limits.h> // 包含了 INT_MIN 和 INT_MAX
void find_max_min_avg(int arr[], int n) {
int max_val = INT_MIN; // 初始化最大值为负无穷大
int min_val = INT_MAX; // 初始化最小值为正无穷大
int sum = 0; // 初始化元素总和
// 遍历数组
for (int i = 0; i < n; i++) {
if (arr[i] > max_val) { // 如果当前元素大于最大值,则更新最大值
max_val = arr[i];
}
if (arr[i] < min_val) { // 同理,如果当前元素小于最小值,更新最小值
min_val = arr[i];
}
sum += arr[i]; // 累加到总和上
}
// 计算平均值
double avg = (double)sum / n;
printf("最大值: %d\n", max_val);
printf("最小值: %d\n", min_val);
printf("平均值: %.2f\n", avg); // 输出保留两位小数
}
int main() {
int array[] = {5, 2, 9, 1, 7}; // 示例数组
int size = sizeof(array) / sizeof(array[0]); // 获取数组长度
find_max_min_avg(array, size);
return 0;
}
```
这个程序首先初始化最大值和最小值为整型范围的极值,然后遍历数组,比较每个元素来更新它们。最后,它会计算数组所有元素的平均值,并将结果输出。
阅读全文