利用c语言实现学生成绩统计,项目二:对学生成绩的统计管理。 要求: (1)至少对10个同学5门课程的成绩进行统计管理。 (2)计算每一门课程的平均分。 (3)我出所有同学所有课程中成绩最高分教对应的学生和课程。 (4)计算平均分方差:
时间: 2023-12-30 08:05:16 浏览: 100
C语言程序设计-统计出若干个学生的平均成绩,最高分以及得最高分的人数;
5星 · 资源好评率100%
可以使用C语言实现一个学生成绩统计管理程序,具体实现可以参考以下步骤:
1. 定义学生结构体,包含学号、姓名和五门课程的成绩。
2. 定义一个数组,存储学生信息。
3. 编写函数,实现输入学生信息和成绩。
4. 编写函数,实现每一门课程的平均分的计算。
5. 编写函数,实现所有同学所有课程中成绩最高分对应的学生和课程的查找。
6. 编写函数,实现平均分方差的计算。
以下是一个简单的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define MAX_STUDENT_NUM 10
#define MAX_COURSE_NUM 5
typedef struct student {
char id[10];
char name[20];
float score[MAX_COURSE_NUM];
} Student;
void input(Student students[], int n) {
for(int i = 0; i < n; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%s", students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
for(int j = 0; j < MAX_COURSE_NUM; j++) {
printf("第%d门课程成绩:", j+1);
scanf("%f", &students[i].score[j]);
}
}
}
void average(Student students[], int n) {
float sum[MAX_COURSE_NUM] = {0.0};
for(int i = 0; i < n; i++) {
for(int j = 0; j < MAX_COURSE_NUM; j++) {
sum[j] += students[i].score[j];
}
}
printf("\n每门课程平均分:\n");
for(int i = 0; i < MAX_COURSE_NUM; i++) {
printf("第%d门课程平均分:%.2f\n", i+1, sum[i]/n);
}
}
void max_score(Student students[], int n) {
float max_score = students[0].score[0];
char max_student[20], max_course[10];
for(int i = 0; i < n; i++) {
for(int j = 0; j < MAX_COURSE_NUM; j++) {
if(students[i].score[j] > max_score) {
max_score = students[i].score[j];
strcpy(max_student, students[i].name);
sprintf(max_course, "第%d门课程", j+1);
}
}
}
printf("\n所有同学所有课程中成绩最高分对应的学生和课程为:%s的%s,成绩为%.2f\n", max_student, max_course, max_score);
}
float variance(Student students[], int n) {
float avg = 0.0, sum = 0.0;
for(int i = 0; i < n; i++) {
for(int j = 0; j < MAX_COURSE_NUM; j++) {
avg += students[i].score[j];
}
}
avg /= (n * MAX_COURSE_NUM);
for(int i = 0; i < n; i++) {
for(int j = 0; j < MAX_COURSE_NUM; j++) {
sum += pow(students[i].score[j] - avg, 2);
}
}
return sum / (n * MAX_COURSE_NUM);
}
int main() {
Student students[MAX_STUDENT_NUM];
int n;
printf("请输入学生人数:");
scanf("%d", &n);
input(students, n);
average(students, n);
max_score(students, n);
printf("\n平均分方差为%.2f\n", variance(students, n));
return 0;
}
```
注意,这只是一个简单的示例代码,实际应用中可能需要更多的功能和优化。
阅读全文