c语言歌手大赛n个评委打分在一行分别输出得分,最低分,最高分。 两个数中间用一个空格分开。 得分四舍五入保留整数部分,最低分和最高分保留一位小数。
时间: 2024-04-30 09:18:02 浏览: 111
下面是一份可能的 C 语言代码,可以实现你所述的功能:
```c
#include <stdio.h>
#include <math.h>
int main() {
int n;
scanf("%d", &n);
double sum = 0, min = 1000000000, max = -1000000000; // 初始化最大值和最小值
for (int i = 0; i < n; i++) {
double score;
scanf("%lf", &score);
sum += score;
if (score < min) min = score;
if (score > max) max = score;
}
double avg = round(sum / n); // 四舍五入
printf("%.0lf %.1lf %.1lf\n", avg, min, max);
return 0;
}
```
这个程序首先读入评委的个数 `n`,然后用一个循环读入每个评委的得分,累加总分并更新最低分和最高分。最后计算平均分并四舍五入取整,输出结果。
需要注意的是,四舍五入需要用到 `round()` 函数,该函数需要在 `math.h` 头文件中声明。最低分和最高分需要保留一位小数,这可以通过在输出格式字符串中使用 `%.1lf` 实现。
相关问题
在一些比赛会有若干个评委给选手打分,评分规则是在评委给出的若干个分数中去掉一个最高分和一个最低分再计算平均分为选手得分,现在就让你写一个程序来代替这个复杂的工作吧。 输入格式为第一行输入一个整数n(3<=n<=20)为给出的分数个数,第二行给出n个大于等于0小于等于100的实数为分数。 输出格式为在一行分别输出得分,最低分,最高分。 两个数中间用一个空格分开。 得分四舍五入保留整数部分,最低分和最高分保留一位小数。
好的,以下是C语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d", &n);
double scores[n];
double sum = 0, max = 0, min = 100;
// 读入分数,同时计算总分、最高分和最低分
for (int i = 0; i < n; i++) {
scanf("%lf", &scores[i]);
sum += scores[i];
if (scores[i] > max) {
max = scores[i];
}
if (scores[i] < min) {
min = scores[i];
}
}
// 计算最终得分
double final_score = (sum - max - min) / (n - 2);
// 输出结果
printf("%d %.1f %.1f", (int)(final_score + 0.5), min, max);
return 0;
}
```
代码解释:
1. 首先读入分数的个数n。
2. 然后利用一个数组scores来存储读入的分数,并且在读入的同时计算总分、最高分和最低分。这里需要注意的是,读入分数时需要使用`%lf`格式化字符来读入双精度浮点数。
3. 根据题目要求,计算最终得分。因为需要去掉一个最高分和一个最低分,所以需要先将总分减去最高分和最低分,再除以剩余分数的个数(n-2)即可得到平均分。
4. 最后输出结果,需要将最终得分四舍五入取整,最低分和最高分保留一位小数。
用C语言输入n个评委的打分,计算并输出参赛选手的最后得分。计算方法为去除一个最高分和去除一个最低分,其余的进行平均,得出参赛选手的最后得分
下面是C语言的代码实现:
```c
#include <stdio.h>
#define MAX_JUDGE_NUM 10 // 最多的评委人数
int main() {
int n; // 评委人数
int scores[MAX_JUDGE_NUM]; // 评委们的打分
int max_score = -1, min_score = 101; // 最高分和最低分
int sum_score = 0; // 所有评委的总分数
printf("请输入评委的人数(不超过%d个):", MAX_JUDGE_NUM);
scanf("%d", &n);
// 读入每个评委的打分
for (int i = 0; i < n; i++) {
printf("请输入第%d个评委的打分:", i + 1);
scanf("%d", &scores[i]);
// 更新最高分和最低分
if (scores[i] > max_score) {
max_score = scores[i];
}
if (scores[i] < min_score) {
min_score = scores[i];
}
sum_score += scores[i]; // 累加总分数
}
// 去掉一个最高分和一个最低分
sum_score -= max_score;
sum_score -= min_score;
// 计算最终得分并输出
double final_score = sum_score * 1.0 / (n - 2);
printf("参赛选手的最终得分为:%.2f\n", final_score);
return 0;
}
```
程序的核心思路是读入每个评委的打分,同时记录下最高分和最低分,累加总分数。然后去掉一个最高分和一个最低分,计算最终得分并输出。需要注意的是,最终得分要用 `double` 类型存储,否则可能会丢失精度。
阅读全文