C语言唱歌比赛时有7位评委参与打分,每 位评委的分数都是[0,100]之间的整 数,评分规则是去掉一个最高分,去 掉一个最低分,其余5位评委的总分 相加除以5即为最后得分。如果有多 个相同的最高分或者最低分,只需要 去掉一个。 例如7位评委的打分为:97889489 809193,最后得分为:91.0 再有分数:89889592939184, 最后得分为:90.6 得分保留一位小数 格式 输入格式 7个整数,其中以空格分隔 输出格式 最后得分,保留一位小数
时间: 2023-05-29 19:03:14 浏览: 269
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
int main() {
int score[7];
for (int i = 0; i < 7; i++) {
scanf("%d", &score[i]);
}
qsort(score, 7, sizeof(int), cmp);
double sum = 0;
for (int i = 1; i < 6; i++) {
sum += score[i];
}
printf("%.1f\n", sum / 5);
return 0;
}
相关问题
用c语言实现唱歌比赛时有7位评委参与打分,每位评委的分数都是[0,100]之间的整数,评分规则是去掉一个最高分,去掉一个最低分,其余5位评委的总分相加除以5即为最后得分。如果有多个相同的最高分或者最低分,只需要去掉一个。
好的,这是一个有趣的问题,实现起来也比较有挑战性。我会给你一些思路,帮助你用C语言实现这个问题。
首先,我们需要定义评分的数据类型和变量。评分的范围是[0,100],所以可以使用整数类型int来表示评分。评委有7个,所以可以使用数组来存储评委的分数:
```c
int scores[7];
```
接着,我们需要读入每位评委的分数。可以使用循环语句来读入分数:
```c
for (int i = 0; i < 7; i++) {
scanf("%d", &scores[i]);
}
```
接下来,我们需要找出最高分和最低分的下标。可以定义两个变量来保存最高分和最低分的下标,然后遍历数组,找出最高分和最低分的下标:
```c
int max_index = 0;
int min_index = 0;
for (int i = 1; i < 7; i++) {
if (scores[i] > scores[max_index]) {
max_index = i;
}
if (scores[i] < scores[min_index]) {
min_index = i;
}
}
```
找出最高分和最低分后,我们需要去掉它们,然后计算剩下5个分数的总和:
```c
int sum = 0;
for (int i = 0; i < 7; i++) {
if (i != max_index && i != min_index) {
sum += scores[i];
}
}
```
最后,我们需要计算最后得分。根据题目描述,最后得分是剩下5个分数的总和除以5。可以直接计算得分并输出结果:
```c
int final_score = sum / 5;
printf("Final score: %d\n", final_score);
```
这样,我们就完成了用C语言实现唱歌比赛评分的问题。完整代码如下:
```c
#include <stdio.h>
int main() {
int scores[7];
for (int i = 0; i < 7; i++) {
scanf("%d", &scores[i]);
}
int max_index = 0;
int min_index = 0;
for (int i = 1; i < 7; i++) {
if (scores[i] > scores[max_index]) {
max_index = i;
}
if (scores[i] < scores[min_index]) {
min_index = i;
}
}
int sum = 0;
for (int i = 0; i < 7; i++) {
if (i != max_index && i != min_index) {
sum += scores[i];
}
}
int final_score = sum / 5;
printf("Final score: %d\n", final_score);
return 0;
}
```
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` 输出一位小数。