创建一学生成绩的项目,包含下列函数模块: 统计班级平均分 2 统计不及格人数 ®排序(既升序也能降序) 主程序,在主程序中输入一组学生成绩,调用以上三个模块,并显示相关信息。 注:每一模块通过编写两个文件(包括.c和.h文件)实现。
时间: 2024-05-01 17:21:42 浏览: 70
好的,我会为您解答这个问题。
首先,我们可以创建一个名为"student_score"的工程,包含以下文件:
- main.c(主程序)
- average.c 和 average.h(统计班级平均分)
- failed.c 和 failed.h(统计不及格人数)
- sort.c 和 sort.h(排序)
下面分别介绍这些模块的具体实现。
1. 统计班级平均分
average.c:
```c
#include "average.h"
float calc_average(float scores[], int n) {
float sum = 0;
for (int i = 0; i < n; i++) {
sum += scores[i];
}
return sum / n;
}
```
average.h:
```c
#ifndef AVERAGE_H
#define AVERAGE_H
float calc_average(float scores[], int n);
#endif
```
2. 统计不及格人数
failed.c:
```c
#include "failed.h"
int count_failed(float scores[], int n) {
int count = 0;
for (int i = 0; i < n; i++) {
if (scores[i] < 60) {
count++;
}
}
return count;
}
```
failed.h:
```c
#ifndef FAILED_H
#define FAILED_H
int count_failed(float scores[], int n);
#endif
```
3. 排序
sort.c:
```c
#include "sort.h"
void bubble_sort(float scores[], int n, int reverse) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (reverse) {
if (scores[j] < scores[j + 1]) {
float tmp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = tmp;
}
} else {
if (scores[j] > scores[j + 1]) {
float tmp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = tmp;
}
}
}
}
}
```
sort.h:
```c
#ifndef SORT_H
#define SORT_H
void bubble_sort(float scores[], int n, int reverse);
#endif
```
4. 主程序
main.c:
```c
#include <stdio.h>
#include "average.h"
#include "failed.h"
#include "sort.h"
#define MAX_STUDENTS 100
int main() {
float scores[MAX_STUDENTS];
int n;
printf("请输入学生人数:");
scanf("%d", &n);
printf("请输入每个学生的分数:\n");
for (int i = 0; i < n; i++) {
scanf("%f", &scores[i]);
}
float avg = calc_average(scores, n);
printf("班级平均分:%g\n", avg);
int failed_count = count_failed(scores, n);
printf("不及格人数:%d\n", failed_count);
int reverse;
printf("请输入排序方式(0为升序,1为降序):");
scanf("%d", &reverse);
bubble_sort(scores, n, reverse);
printf("排序结果:\n");
for (int i = 0; i < n; i++) {
printf("%g ", scores[i]);
}
printf("\n");
return 0;
}
```
编译运行:
```bash
$ gcc main.c average.c failed.c sort.c -o student_score
$ ./student_score
请输入学生人数:5
请输入每个学生的分数:
90 80 70 60 50
班级平均分:70
不及格人数:2
请输入排序方式(0为升序,1为降序):0
排序结果:
50 60 70 80 90
```
以上就是一个简单的学生成绩统计项目的实现。
阅读全文