c语言学校进行歌唱比赛。每位选手演唱完毕后,由十位评委打分(分数为整数,满分100分)。 评分规则是,去掉一个最高分,去掉一个最低分,计算其他八位评委的平均分。 输入格式: 在一行中,输入十位评委给出的分数
时间: 2024-01-18 09:03:47 浏览: 97
好的,我可以回答你的问题。对于这个问题,我可以提供以下代码实现:
```c
#include <stdio.h>
int main() {
int scores[10];
int sum = 0;
int max = 0, min = 100;
// 读取评委打分
for (int i = 0; i < 10; i++) {
scanf("%d", &scores[i]);
sum += scores[i];
if (scores[i] > max) {
max = scores[i];
}
if (scores[i] < min) {
min = scores[i];
}
}
// 去掉一个最高分和一个最低分
sum = sum - max - min;
// 计算平均分
int avg = sum / 8;
printf("平均分为: %d分\n", avg);
return 0;
}
```
这个程序首先读取十位评委打分,然后找出最高分和最低分,去掉它们,计算剩下八个评委的平均分,并输出结果。注意,在这个程序中,我们假设输入的分数都是合法的整数,并且不进行任何错误处理。
相关问题
c语言学校进行歌唱比赛。每位选手演唱完毕后,由十位评委打分(分数为整数,满分100分)。 评分规则是,去掉一个最高分,去掉一个最低分,计算其他八位评委的平均分。 输入格式: 在一行中,输入十位评委给出的分数,空格隔开。 输出格式: 去掉一个最高分,去掉一个最低分,计算其他八位评委的平均分。结果保留一位小数。
以下是本题的 C 代码实现:
```c
#include <stdio.h>
int main() {
int scores[10], i, max, min;
double sum = 0.0;
// 输入评委给出的分数
for (i = 0; i < 10; i++) {
scanf("%d", &scores[i]);
}
// 找出最高分和最低分
max = min = scores[0];
for (i = 1; i < 10; i++) {
if (scores[i] > max) {
max = scores[i];
}
if (scores[i] < min) {
min = scores[i];
}
}
// 去掉一个最高分和一个最低分
for (i = 0; i < 10; i++) {
if (scores[i] != max && scores[i] != min) {
sum += scores[i];
}
}
// 计算其他八位评委的平均分
printf("%.1f", sum / 8.0);
return 0;
}
```
解释一下代码的思路:
首先,我们定义一个整型数组 `scores` 存储评委给出的分数,以及一个变量 `i` 作为循环计数器,以及一个变量 `max` 和 `min` 分别表示最高分和最低分,以及一个双精度浮点数变量 `sum` 作为分数的总和。
接下来,我们使用 `for` 循环输入评委给出的分数,使用 `scanf()` 函数读入整数。
然后,我们使用 `for` 循环找出最高分和最低分,可以使用 `if` 语句和比较运算符实现。
接下来,我们使用 `for` 循环遍历分数数组,去掉一个最高分和一个最低分,计算其他八位评委的分数总和。
最后,我们计算其他八位评委的平均分,即将分数总和除以8,并使用 `printf()` 函数输出结果,保留一位小数(使用字符串格式化语法 `%.1f`)。
c语言描述 唱歌比赛时有7位评委参与打分,每位评委的分数都是10,100之 间的整数,评分规则是去掉一个最高分,去掉一个最低分,其 余5位评委的总分相加除以5即为最后得分。如果有多个相同的 最高分或者最低分,只需要去掉一个。 例如7位评委的打分为:97889489809193,最后得分为:9 1.0 再有分数:89889592939184,最后得分为:90.6 得分保留一位小数
好的,这是一个计算得分的问题。我可以用 C 语言为您提供一个代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
int main() {
int scores[7];
for (int i = 0; i < 7; i++) {
scanf("%d", &scores[i]);
}
qsort(scores, 7, sizeof(int), compare);
int sum = 0;
for (int i = 1; i < 6; i++) {
sum += scores[i];
}
printf("%.1f\n", (float)sum / 5.0);
return 0;
}
```
这里,我们首先定义一个长度为 7 的整型数组 `scores`,使用 `scanf` 读入 7 个整数评分。然后,我们使用标准库函数 `qsort` 对评分数组进行排序,以便去掉最高分和最低分。接着,我们使用一个循环遍历排序后的数组,将除去最高分和最低分的 5 个分数相加,计算总分 `sum`。最后,我们将总分除以 5 并输出结果。注意,由于得分保留一位小数,因此需要将结果强制转换为浮点型,并使用 `printf` 的格式控制符 `%.1f` 输出一位小数。
阅读全文