用C语言编程 输入若干正整数,0代表输入结束。将该组数据排序后去掉最大的两个数和最小的两个数后再求平均值,即掐头 去尾法求平均值。
时间: 2024-05-04 10:20:55 浏览: 159
以下是用C语言编写的程序,实现了输入一组正整数,排序后去掉最大和最小的两个数,然后求平均值的功能:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int nums[100]; // 用数组存储输入的正整数
int n = 0; // 记录输入的正整数个数
int sum = 0; // 记录去掉最大和最小的两个数后的和
int i;
// 循环读入正整数,直到输入0为止
do {
scanf("%d", &nums[n]);
n++;
} while (nums[n-1] != 0);
// 对输入的正整数进行排序(使用冒泡排序)
for (i = 0; i < n-1; i++) {
int j;
for (j = 0; j < n-1-i; j++) {
if (nums[j] > nums[j+1]) {
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
// 计算去掉最大和最小的两个数后的和
for (i = 2; i < n-2; i++) {
sum += nums[i];
}
// 计算平均值并输出
printf("平均值为:%.2f\n", (float)sum / (n-4));
return 0;
}
```
程序中用到了冒泡排序的算法,这里简单解释一下:首先从第一个元素开始,依次比较相邻两个元素的大小,如果前面的元素比后面的元素大,则交换它们的位置;这样一趟下来,最大的元素就被排到了最后面。然后再从第一个元素开始,重复上述步骤,但不包括已经排好的最后一个元素。这样重复n-1趟,就可以把所有元素按从小到大的顺序排好了。
阅读全文