输入10个分数,去掉最高分和最低分后求平均分,输出平均分,精确到小数点后两位 c语言
时间: 2024-10-25 21:14:27 浏览: 69
在C语言中,你可以先将分数存储在一个动态数组中,然后去除最高分和最低分,再计算剩下的分数平均值。以下是相应的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h> // 使用这个头文件获取strlen函数
#define MAX_SCORES 10
// 函数声明用于存储分数
double* store_scores(int scores[], int count);
// 函数声明用于计算平均分
double calculate_average(double* scores, int count);
int main() {
int scores[MAX_SCORES];
double* score_array;
int count = 0;
printf("请输入10个分数(按空格分隔): ");
for (int i = 0; i < MAX_SCORES; i++) {
if (scanf("%d", &scores[i]) == 1 && scores[i] != -1) { // 检查输入是否有效
count++;
} else {
break; // 如果遇到无效输入则停止
}
}
score_array = store_scores(scores, count); // 存储分数
if (count >= 2) { // 至少需要两个有效的分数才能计算
double average = calculate_average(score_array, count - 2); // 去掉最高和最低分后的平均
printf("去掉最高分和最低分后的平均分为: %.2f\n", average);
free(score_array); // 释放内存
} else {
printf("输入的有效分数不足两个。\n");
}
return 0;
}
// 存储分数的函数
double* store_scores(int scores[], int count) {
double* array = (double*)malloc(count * sizeof(double));
for (int i = 0; i < count; i++) {
array[i] = (double)scores[i]; // 将整数转换成双精度浮点数
}
return array;
}
// 计算平均分的函数
double calculate_average(double* scores, int count) {
double sum = 0;
for (int i = 0; i < count; i++) {
sum += scores[i];
}
return sum / count;
}
```
在这段代码中,用户会被提示输入10个分数,程序会存储这些分数、去除非有效分数并计算剩余分数的平均值。注意,你需要包含`<stdlib.h>`头文件来使用动态内存分配。
阅读全文