C语言 键盘加入10个评委分数(范围0-100)存放在数组中,请将分数按照从大大小的顺序输出;去掉最高分和最低分后,输出平均分
时间: 2024-02-13 16:01:30 浏览: 86
好的,这是一个经典的排序和计算平均数的问题。以下是代码实现:
```c
#include <stdio.h>
#define NUM_JUDGES 10
void sort_scores(int scores[]);
float calc_avg(int scores[]);
int main()
{
int scores[NUM_JUDGES];
// 输入分数
printf("请输入 %d 个评委的分数(0-100):\n", NUM_JUDGES);
for (int i = 0; i < NUM_JUDGES; i++) {
scanf("%d", &scores[i]);
}
// 排序分数
sort_scores(scores);
// 输出排序后的分数
printf("排序后的分数为:\n");
for (int i = 0; i < NUM_JUDGES; i++) {
printf("%d ", scores[i]);
}
printf("\n");
// 去掉最高分和最低分,计算平均分
float avg_score = calc_avg(&scores[1]);
printf("去掉最高分和最低分后,平均分为 %.2f\n", avg_score);
return 0;
}
// 冒泡排序
void sort_scores(int scores[])
{
for (int i = 0; i < NUM_JUDGES - 1; i++) {
for (int j = 0; j < NUM_JUDGES - 1 - i; j++) {
if (scores[j] < scores[j + 1]) {
int temp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = temp;
}
}
}
}
// 计算平均分
float calc_avg(int scores[])
{
int sum = 0;
for (int i = 0; i < NUM_JUDGES - 2; i++) {
sum += scores[i];
}
return (float)sum / (NUM_JUDGES - 2);
}
```
这个程序用了冒泡排序来对分数进行排序,去掉最高分和最低分后再计算平均分。注意,这里的 `calc_avg` 函数中传入的是去掉最高分和最低分后的分数数组的第二个元素的地址,因为数组名本身就是指向数组第一个元素的指针。
阅读全文