某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入)。定义结构体类型描述学生信息,每个学生信息包括:学号、姓名、多门课的成绩、总成绩和平均成绩。用结构体数组作为函数参数,编程实现如下菜单驱动的学生成绩管理系统。 (1) 录入每个学生的学号、姓名和各科考试成绩。 (2) 计算每门课程的总分和平均分。 (3) 计算每个学生的总分和平均分。 (4) 按每个学生的总分由高到低排出名次表。 (5) 按学号由小到大排出成绩表。 (6) 按姓名的字典顺序排出成绩表。 (7) 按学号查询学生排名极其考试成绩。 (8) 按姓名查询学生排名极其考试成绩。 (9) 按优秀(90~100)、良好(80~90)、中等(70~80)、及格(60~70)、不及格(0~59)5个类别,对每门课程分别统计每个类别的人数以及所占的百分比。 (10) 输出每个学生的学号、姓名、各科考试成绩以及每门课程的总分和平均分。 要求程序运行后先显示如下菜单,并提示用户输入选项: 1. Input record 2. Caculate total and average score of every course 3. Caculate total and average score of every student 4. Sort in descending order by total score of every student 5. Sort in ascending order by number 6. Sort in dictionary order by name 7. Search by number 8. Search by name 9. Statistic analysis for every course 10. List record 0. Exit
时间: 2024-02-16 19:04:20 浏览: 147
好的,这是一个C语言编程问题,我可以帮您解答。以下是程序的基本框架,您可以在此基础上进行编码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_STUDENTS 30
#define MAX_COURSES 6
#define MAX_NAME_LENGTH 20
#define MAX_GRADE 100
// 定义学生结构体类型
struct student {
char id[10];
char name[MAX_NAME_LENGTH];
int grade[MAX_COURSES];
int total;
float average;
int rank;
};
// 声明函数
void input_record(struct student students[], int num_students);
void calculate_total_average_of_courses(struct student students[], int num_students, int num_courses, int course_total[], float course_average[]);
void calculate_total_average_of_students(struct student students[], int num_students);
void sort_by_total_score(struct student students[], int num_students);
void sort_by_number(struct student students[], int num_students);
void sort_by_name(struct student students[], int num_students);
void search_by_number(struct student students[], int num_students);
void search_by_name(struct student students[], int num_students);
void statistic_analysis_for_courses(struct student students[], int num_students, int num_courses, int course_total[]);
void list_record(struct student students[], int num_students, int num_courses, int course_total[], float course_average[]);
int main() {
int option, num_students, num_courses;
struct student students[MAX_STUDENTS];
int course_total[MAX_COURSES];
float course_average[MAX_COURSES];
// 显示菜单
printf("1. Input record\n");
printf("2. Caculate total and average score of every course\n");
printf("3. Caculate total and average score of every student\n");
printf("4. Sort in descending order by total score of every student\n");
printf("5. Sort in ascending order by number\n");
printf("6. Sort in dictionary order by name\n");
printf("7. Search by number\n");
printf("8. Search by name\n");
printf("9. Statistic analysis for every course\n");
printf("10. List record\n");
printf("0. Exit\n");
// 获取用户输入选项
printf("Enter your option: ");
scanf("%d", &option);
switch (option) {
case 1:
// 录入学生信息
break;
case 2:
// 计算每门课程的总分和平均分
break;
case 3:
// 计算每个学生的总分和平均分
break;
case 4:
// 按每个学生的总分由高到低排出名次表
break;
case 5:
// 按学号由小到大排出成绩表
break;
case 6:
// 按姓名的字典顺序排出成绩表
break;
case 7:
// 按学号查询学生排名及其考试成绩
break;
case 8:
// 按姓名查询学生排名及其考试成绩
break;
case 9:
// 对每门课程分别统计每个类别的人数以及所占的百分比
break;
case 10:
// 输出每个学生的学号、姓名、各科考试成绩以及每门课程的总分和平均分
break;
case 0:
// 退出程序
break;
default:
printf("Invalid option.\n");
break;
}
return 0;
}
void input_record(struct student students[], int num_students) {
// 实现录入学生信息的函数
}
void calculate_total_average_of_courses(struct student students[], int num_students, int num_courses, int course_total[], float course_average[]) {
// 实现计算每门课程的总分和平均分的函数
}
void calculate_total_average_of_students(struct student students[], int num_students) {
// 实现计算每个学生的总分和平均分的函数
}
void sort_by_total_score(struct student students[], int num_students) {
// 实现按每个学生的总分由高到低排出名次表的函数
}
void sort_by_number(struct student students[], int num_students) {
// 实现按学号由小到大排出成绩表的函数
}
void sort_by_name(struct student students[], int num_students) {
// 实现按姓名的字典顺序排出成绩表的函数
}
void search_by_number(struct student students[], int num_students) {
// 实现按学号查询学生排名及其考试成绩的函数
}
void search_by_name(struct student students[], int num_students) {
// 实现按姓名查询学生排名及其考试成绩的函数
}
void statistic_analysis_for_courses(struct student students[], int num_students, int num_courses, int course_total[]) {
// 实现对每门课程分别统计每个类别的人数以及所占的百分比的函数
}
void list_record(struct student students[], int num_students, int num_courses, int course_total[], float course_average[]) {
// 实现输出每个学生的学号、姓名、各科考试成绩以及每门课程的总分和平均分的函数
}
```
阅读全文