请用C语言实现某班最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体 门数由键盘输入)。请使用模块化程序设计方法编程实现如下菜单驱动的学生成绩管理系统:(1)输入每个学生的学号、姓名和各科考试成绩; (2)计算每门课程的总分和平均分;
时间: 2023-12-30 22:02:34 浏览: 69
好的,根据您的要求,我来给您写一个 C 语言程序,实现学生成绩管理系统的功能。
```c
#include <stdio.h>
#define MAX_STUDENT_NUM 30
#define MAX_COURSE_NUM 6
int student_num; // 学生人数
int course_num; // 课程数
struct Student {
int id; // 学号
char name[20]; // 姓名
int score[MAX_COURSE_NUM]; // 各科考试成绩
};
struct Student students[MAX_STUDENT_NUM]; // 定义一个学生数组
// 输入每个学生的学号、姓名和各科考试成绩
void input_scores() {
printf("请输入学生人数:");
scanf("%d", &student_num);
printf("请输入课程数:");
scanf("%d", &course_num);
for (int i = 0; i < student_num; i++) {
printf("请输入第%d个学生的学号、姓名和各科考试成绩:\n", i + 1);
scanf("%d%s", &students[i].id, students[i].name);
for (int j = 0; j < course_num; j++) {
scanf("%d", &students[i].score[j]);
}
}
}
// 计算每门课程的总分和平均分
void calc_course_score() {
int total_score[MAX_COURSE_NUM] = {0}; // 定义每门课程的总分数组
float avg_score[MAX_COURSE_NUM] = {0}; // 定义每门课程的平均分数组
for (int i = 0; i < student_num; i++) {
for (int j = 0; j < course_num; j++) {
total_score[j] += students[i].score[j];
}
}
for (int i = 0; i < course_num; i++) {
avg_score[i] = (float)total_score[i] / student_num;
printf("第%d门课程的总分为:%d,平均分为:%.2f\n", i + 1, total_score[i], avg_score[i]);
}
}
int main() {
input_scores(); // 输入每个学生的学号、姓名和各科考试成绩
calc_course_score(); // 计算每门课程的总分和平均分
return 0;
}
```
以上就是一个简单的学生成绩管理系统的实现,您可以根据需要进行修改和完善。
阅读全文