用C语言编写程序:输入十个数,要求在1~100之间,去掉一个最高分,去掉一个最低分,求剩余八个数的平均值,十个数中与平均值相差最大的最不公平,与平均值相差最小的最公平,最后输出最公平的和最不公平的。
时间: 2023-11-28 20:06:42 浏览: 79
好的,这是一个不错的编程练习题目。以下是程序的C语言代码实现:
```c
#include <stdio.h>
int main() {
int num[10];
int max = 0, min = 101;
int sum = 0, avg = 0;
int max_diff = 0, min_diff = 101;
int max_index = 0, min_index = 0;
// 输入十个数,若不满足1~100,则重新输入
for (int i = 0; i < 10; i++) {
do {
printf("请输入第%d个数:", i + 1);
scanf("%d", &num[i]);
} while (num[i] < 1 || num[i] > 100);
}
// 找出最高分和最低分,并计算总分
for (int i = 0; i < 10; i++) {
if (num[i] > max) {
max = num[i];
}
if (num[i] < min) {
min = num[i];
}
sum += num[i];
}
// 去掉最高分和最低分,计算平均值
avg = (sum - max - min) / 8;
// 找出与平均值相差最大的数和最小的数
for (int i = 0; i < 10; i++) {
int diff = abs(num[i] - avg);
if (diff > max_diff) {
max_diff = diff;
max_index = i;
}
if (diff < min_diff) {
min_diff = diff;
min_index = i;
}
}
// 输出结果
printf("去掉一个最高分和一个最低分后,剩余八个数的平均值为:%d\n", avg);
printf("与平均值相差最大的数是:%d,与平均值的差值为:%d\n", num[max_index], max_diff);
printf("与平均值相差最小的数是:%d,与平均值的差值为:%d\n", num[min_index], min_diff);
return 0;
}
```
该程序首先输入十个数,若不在1~100之间,则要求重新输入。接着找出其中的最高分和最低分,计算总分和平均值,并去掉最高分和最低分。然后再找出与平均值相差最大和最小的数,输出结果即可。
需要注意的是,该程序只实现了与平均值相差最大和最小的数的输出,而没有输出最公平的和最不公平的和。这是因为“最公平的和最不公平的”这个问题描述有些模糊,不太容易进行编程实现。如果您有更明确的需求,可以再详细描述一下,我会尽力帮您解决。
阅读全文