C基础:输入10个数去掉最大最小求平均值
时间: 2023-05-12 14:07:34 浏览: 333
以下是一个可能的解决方案:
```c
#include <stdio.h>
int main() {
int nums[10];
int sum = 0;
int max = -1000000;
int min = 1000000;
printf("请输入10个整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &nums[i]);
sum += nums[i];
if (nums[i] > max) {
max = nums[i];
}
if (nums[i] < min) {
min = nums[i];
}
}
double avg = (double)(sum - max - min) / 8;
printf("去掉最大值 %d 和最小值 %d 后的平均值为 %.2f\n", max, min, avg);
return 0;
}
```
这个程序首先读入10个整数,然后找出其中的最大值和最小值,并计算出去掉最大值和最小值后的平均值。注意,这里使用了一个类型转换,将 sum - max - min 的结果转换为 double 类型,以便计算平均值。
相关问题
c语言输入10个整数,求去掉最大数和最小数后的平均值代码
以下是C语言代码实现:
#include <stdio.h>
int main() {
int nums[10]; // 存储输入的10个整数
int max, min, sum = 0; // 记录最大值、最小值以及总和
float avg; // 存储平均值
// 输入10个整数
for (int i = 0; i < 10; i++) {
printf("请输入第%d个整数:", i + 1);
scanf("%d", &nums[i]);
}
// 初始化max和min为数组的第一个元素
max = nums[0];
min = nums[0];
// 计算最大值、最小值以及总和
for(int i = 0; i < 10; i++) {
if (nums[i] > max) {
max = nums[i];
}
if (nums[i] < min) {
min = nums[i];
}
sum += nums[i];
}
// 计算平均值并去掉最大值和最小值
avg = (float) (sum - max - min) / 8;
// 输出结果
printf("去掉最大值和最小值后的平均数为:%.2f", avg);
return 0;
}
希望对您有帮助!
用C语言编程 输入若干正整数,0代表输入结束。将该组数据排序后去掉最大的两个数和最小的两个数后再求平均值,即掐头 去尾法求平均值。
以下是用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趟,就可以把所有元素按从小到大的顺序排好了。
阅读全文