输入7个成绩,去掉最高分和最低分,求平均成绩。 【问题描述】输入7个成绩,去掉最高分和最低分,求平均成绩。 【输入形式】 【输出形式】 【样例输入】 2.3 4.5 6.7 7.8 9.8 1.2 3.4 【样例输出】 ave=4.940000
时间: 2024-10-25 12:17:46 浏览: 46
要在C语言中解决这个问题,你需要先接收用户的输入,存储这7个成绩,然后删除最高分和最低分,最后计算剩余成绩的平均值。下面是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h> // 为了使用qsort函数
#define NUM_SCORES 7
double find_average(double scores[NUM_SCORES]) {
double sum = 0;
for (int i = 0; i < NUM_SCORES - 2; i++) { // 去掉最高和最低分,留下5个
sum += scores[i];
}
return sum / (NUM_SCORES - 2); // 返回平均值
}
void sort_scores(double scores[]) {
qsort(scores, NUM_SCORES, sizeof(double), compare); // 使用快速排序算法
}
int compare(const void *a, const void *b) {
return (*(double*)a - *(double*)b);
}
int main() {
double scores[NUM_SCORES];
double ave;
printf("Please enter 7 scores: ");
for (int i = 0; i < NUM_SCORES; i++) {
scanf("%lf", &scores[i]);
}
sort_scores(scores); // 先对分数进行排序
ave = find_average(scores);
printf("After removing highest and lowest scores, the average is: %.6f\n", ave);
return 0;
}
```
**输入形式**:用户会连续输入7个浮点数,每个数之间用空格隔开。
**输出形式**:程序将输出去除最高分和最低分后的平均成绩,保留6位小数。
**样例输入**:2.3 4.5 6.7 7.8 9.8 1.2 3.4
**样例输出**:ave=4.940000
阅读全文