用数组的方式读入5个评委的分数(分数百分制),输出如下信息:其中90分以上的个数,最高分,最低分,去掉最高分和最低分后的平均分。
时间: 2023-04-26 10:02:28 浏览: 247
可以使用一个长度为5的数组来存储5个评委的分数,然后遍历数组,统计90分以上的个数,同时找到最高分和最低分。接着,可以使用一个变量来记录总分,再去掉最高分和最低分后,计算平均分。最后,输出统计信息即可。
相关问题
通过C语言实现用数组的方式读入5个评委的分数(分数百分制),输出如下信息:其中90分以上的个数,最高分,最低分,去掉最高分和最低分后的平均分。并给出源码
在C语言中,你可以通过以下几个步骤实现这个功能:
1. 首先,你需要声明一个数组来存储5个评委的分数,并使用`stdio.h`库来读取用户输入。
```c
#include <stdio.h>
#include <stdlib.h> // 用于处理整数排序
int main() {
int scores[5]; // 存储5个评委的分数
int i = 0;
// 读取分数
while (i < 5) {
scanf("%d", &scores[i++]); // 保证数组下标合法
}
// 接下来的代码计算并输出结果
// ...
return 0;
}
```
2. 计算90分以上评委的数量,最高分和最低分:
- 使用变量`count`记录90分以上的个数,`max_score`存储最高分,`min_score`存储最低分。
- 分别遍历数组,初始化这两个值,然后在遍历过程中更新最大和最小值。
3. 删除最高分和最低分后的数据,可以创建一个新的数组`filtered_scores`,只包含中间的三个元素。
4. 计算去掉最高分和最低分后的平均分,可以分别累加其余分数,然后除以剩余元素个数。
下面是完整的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define COUNT 3 // 只保留中间的3个分数
int main() {
int scores[5];
int count = 0, max_score, min_score;
float average;
// 读取分数
for (int i = 0; i < 5; ++i) {
scanf("%d", &scores[i]);
if (scores[i] >= 90) {
count++;
}
if (i == 0 || scores[i] > max_score) {
max_score = scores[i];
}
if (i == 0 || scores[i] < min_score) {
min_score = scores[i];
}
}
// 移除最高分和最低分
int filtered_scores[COUNT] = {0};
for (int j = 1, k = 0; j < 5 && k < COUNT; ++j) {
if (scores[j] != max_score && scores[j] != min_score) {
filtered_scores[k++] = scores[j];
}
}
// 计算平均分
average = (float)sum(filtered_scores, COUNT) / COUNT;
sum function is not shown here, you would implement it separately to accumulate the sum of elements.
printf("90分以上的评委个数: %d\n", count);
printf("最高分: %d\n", max_score);
printf("最低分: %d\n", min_score);
printf("去掉最高分和最低分后的平均分: %.2f\n", average);
return 0;
}
```
用C语言编程实现:任务描述: 8号选手参加校园歌手大赛,编程读入20个整数(70-100之间)并存入数组中做为20个评委的打分,请按题目要求编程实现输出样例要求的功能(最后得分为去掉最高分和最低分后的平均分)。 输入格式: 20个整数 输出格式: 见样例 输入样例: 82 89 83 70 94 90 86 73 79 83 89 97 95 93 82 94 96 94 91 84 输出样例: 去掉一个最高分:97分 去掉一个最低分:70分 8号选手最后得分:87.611分
以下是用 C 语言编写的程序实现该任务:
```c
#include <stdio.h>
int main() {
int scores[20]; // 存储20个评委的打分
int sum = 0, max = 0, min = 100;
float avg;
// 读入20个整数并存入数组中
for (int i = 0; i < 20; i++) {
scanf("%d", &scores[i]);
// 计算总分和最高分/最低分
sum += scores[i];
if (scores[i] > max) {
max = scores[i];
}
if (scores[i] < min) {
min = scores[i];
}
}
// 计算平均分
avg = (float)(sum - max - min) / 18;
// 输出结果
printf("去掉一个最高分:%d分\n", max);
printf("去掉一个最低分:%d分\n", min);
printf("8号选手最后得分:%.3f分\n", avg);
return 0;
}
```
程序逻辑如下:
1. 定义一个数组 `scores` ,用于存储20个评委的打分。
2. 循环读入20个整数并存入 `scores` 数组中,同时计算总分和最高分/最低分。
3. 根据题目要求,去掉一个最高分和一个最低分,计算平均分。
4. 输出结果,其中 %.3f 表示保留三位小数输出。
注意,由于最高分和最低分只有一个,因此在计算平均分时要除以 18 而不是 20。
阅读全文