以下是使用C语言求一个班成绩的最高分和最低分的完整示例代码,包含输入处理和结果输出:
一、完整代码示例
```c
define MAX_STUDENTS 100
// 函数声明
void findMaxMin(float scores[], int size, float *max, float *min);
void calculateAverage(float scores[], int size, float *average);
int main() {
float scores[MAX_STUDENTS];
int numStudents;
float max, min, average;
printf("请输入学生人数(最多100人):");
scanf("%d", &numStudents);
if (numStudents <= 0 || numStudents > MAX_STUDENTS) {
printf("输入的学生人数不合法!
");
return 1;
}
printf("请输入%d个学生的成绩:n", numStudents);
for (int i = 0; i < numStudents; i++) {
scanf("%f", &scores[i]);
}
// 调用函数计算最高分和最低分
findMaxMin(scores, numStudents, &max, &min);
// 调用函数计算平均分
calculateAverage(scores, numStudents, &average);
printf("最高分:%.2f(学号:%d)
", max, (int)max);
printf("最低分:%.2f(学号:%d)
", min, (int)min);
printf("平均分:%.2f
", average);
return 0;
}
// 求最高分和最低分
void findMaxMin(float scores[], int size, float *max, float *min) {
*max = scores;
*min = scores;
for (int i = 1; i < size; i++) {
if (scores[i] > *max) {
*max = scores[i];
}
if (scores[i] < *min) {
*min = scores[i];
}
}
}
// 计算平均分
void calculateAverage(float scores[], int size, float *average) {
float sum = 0;
for (int i = 0; i < size; i++) {
sum += scores[i];
}
*average = sum / size;
}
```
二、代码说明
- 首先通过`scanf`获取学生人数,并进行合法性检查(确保人数在1到100之间)。
- 然后循环输入学生成绩,存储在`scores`数组中。
计算最高分和最低分
- 定义`findMaxMin`函数,通过遍历数组比较每个元素,更新`max`和`min`值。
- 在`main`函数中调用该函数,并通过指针传递结果。
计算平均分
- 定义`calculateAverage`函数,先计算所有成绩的总和,再除以学生人数。
结果输出
- 使用`printf`格式化输出最高分、最低分和平均分,学号通过强制类型转换转换为整数显示。
三、注意事项
数组大小限制: 定义了一个最大容量为100的数组,实际使用时应根据需求调整。 输入验证
扩展功能:可在此基础上扩展,如计算中位数、众数等统计信息。
通过以上步骤,可以高效地统计一个班级的最高分和最低分,并输出相关结果。