c语言用scanf函数去除最值求平均值
时间: 2024-10-11 16:08:48 浏览: 11
在C语言中,如果你想要使用`scanf`函数从用户那里获取一组数据,然后计算并去除最大值和最小值后求平均值,你可以这样做:
首先,你需要定义一个变量数组来存储输入的数据,并用`scanf`读取每个数。假设你有若干个整数需要处理,可以这样编写:
```c
#include <stdio.h>
#include <stdlib.h> // 需要这个头文件来进行动态内存分配
int main() {
int n, i;
float sum = 0, max_value, min_value; // 初始化总和、最大值和最小值
printf("请输入数字的数量: ");
scanf("%d", &n);
// 动态分配内存存储输入的数值
int *numbers = (int*) malloc(n * sizeof(int));
if (numbers == NULL) { // 检查内存分配是否成功
perror("Memory allocation failed");
return 1;
}
for (i = 0; i < n; i++) {
printf("请输入第%d个数字: ", i + 1);
scanf("%d", &numbers[i]);
// 更新最大值和最小值
if (i == 0 || numbers[i] > max_value)
max_value = numbers[i];
if (i == 0 || numbers[i] < min_value)
min_value = numbers[i];
sum += numbers[i];
}
// 去除最大值和最小值
n -= 2; // 因为我们已经知道了两个边界值,所以减去2
// 计算剩余数值的平均值
float average = (float)sum / n;
printf("去掉最大值和最小值后的平均值为: %.2f\n", average);
// 释放内存
free(numbers);
return 0;
}
```
在这个程序中,我们先获取输入的数值数量,然后按顺序读取每个数值,并更新最大值、最小值以及总和。最后,由于我们已知了最大值和最小值,从总数中减去它们,再除以剩余数量得到平均值。
阅读全文