#include <stdio.h> int main() { int nums[10]; int i, sum = 0, max = 0, min = 101; printf("请输入十个1~100之间的数字:\n"); for (i = 0; i < 10; i++) { while (1) { scanf("%d", &nums[i]); if (nums[i] >= 1 && nums[i] <= 100) { break; } else { printf("输入的数字不在1~100之间,请重新输入:\n"); } } if (nums[i] > max) { max =nums[i]; } if (nums[i] < min) { min = nums[i]; } sum += nums[i]; } sum = sum - max - min; printf("去掉一个最高分%d,去掉一个最低分%d后,剩余八个数的平均值为:%.2f\n", max, min, (float)sum / 8); return 0; }补充程序,条件如下:要求找出最公平的打分和最不公平的打分(最公平的与平均值相差最小的,最不公平的与平均值相差最大))
时间: 2024-01-16 17:01:50 浏览: 63
好的,根据您的要求,我来为您补充程序。
在找出与平均值相差最大和最小的数时,我们可以记录下它们的下标,然后输出对应的数字即可。找出与平均值相差最小的数也是同样的道理。
以下是添加了最公平和最不公平打分的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h> // abs() 函数需要该头文件
int main() {
int nums[10];
int i, sum = 0, max = 0, min = 101, max_index = 0, min_index = 0;
float avg;
// 输入十个数,若不满足1~100,则重新输入
printf("请输入十个1~100之间的数字:\n");
for (i = 0; i < 10; i++) {
do {
scanf("%d", &nums[i]);
if (nums[i] < 1 || nums[i] > 100) {
printf("输入的数字不在1~100之间,请重新输入:\n");
}
} while (nums[i] < 1 || nums[i] > 100);
if (nums[i] > max) {
max = nums[i];
max_index = i;
}
if (nums[i] < min) {
min = nums[i];
min_index = i;
}
sum += nums[i];
}
// 去掉最高分和最低分,计算平均值
sum = sum - max - min;
avg = (float)sum / 8;
// 找出与平均值相差最大和最小的数,以及最公平和最不公平的打分
int max_diff = abs(nums[0] - avg);
int min_diff = abs(nums[0] - avg);
int max_diff_index = 0, min_diff_index = 0;
for (i = 1; i < 10; i++) {
int diff = abs(nums[i] - avg);
if (diff > max_diff) {
max_diff = diff;
max_diff_index = i;
}
if (diff < min_diff) {
min_diff = diff;
min_diff_index = i;
}
}
// 输出结果
printf("去掉一个最高分%d,去掉一个最低分%d后,剩余八个数的平均值为:%.2f\n", max, min, avg);
printf("与平均值相差最大的数是:%d,与平均值的差值为:%d\n", nums[max_diff_index], max_diff);
printf("与平均值相差最小的数是:%d,与平均值的差值为:%d\n", nums[min_diff_index], min_diff);
printf("最公平的打分是:%d\n", nums[min_diff_index]);
printf("最不公平的打分是:%d\n", nums[max_diff_index]);
return 0;
}
```
在上述代码中,我们首先计算出最高分和最低分,然后去掉它们,计算平均值。在找出与平均值相差最大和最小的数时,我们记录下它们的下标,然后输出对应的数字即可。最后输出最公平和最不公平的打分。
希望这个程序能够满足您的需求。
阅读全文