用c语言编程:编写一个菜单驱动的学生成绩管理程序(采用结构体数组法)。要求如下: 1. 能输入并显示n个学生的m门考试科目的成绩、总分和平均分。 2.按总分由高到低进行排序。 3. 任意输入一个学号,能显示该学生的姓名、各门功课的成绩。
时间: 2024-02-28 20:56:40 浏览: 21
好的,以下是一个简单的菜单驱动的学生成绩管理程序,采用结构体数组法,使用了C语言编写。请注意,代码中并没有包含输入学生成绩的部分,需要您自己实现。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20 // 姓名最大长度
#define MAX_STU_NUM 50 // 最大学生数
#define MAX_COURSE_NUM 6 // 最大科目数
// 学生结构体
struct student {
char name[MAX_NAME_LEN];
int id;
float scores[MAX_COURSE_NUM];
float total;
float avg;
};
// 学生数组
struct student stu_arr[MAX_STU_NUM];
// 学生数量
int stu_count = 0;
// 显示菜单
void show_menu() {
printf("1. 输入学生成绩\n");
printf("2. 按总分排序\n");
printf("3. 查找学生信息\n");
printf("4. 退出程序\n");
printf("请输入您的选择:");
}
// 输入学生成绩
void input_scores() {
printf("请输入学生数量:");
scanf("%d", &stu_count);
for (int i = 0; i < stu_count; i++) {
printf("请输入第%d个学生的姓名:", i + 1);
scanf("%s", stu_arr[i].name);
printf("请输入第%d个学生的学号:", i + 1);
scanf("%d", &stu_arr[i].id);
for (int j = 0; j < MAX_COURSE_NUM; j++) {
printf("请输入第%d个学生的第%d门课的成绩:", i + 1, j + 1);
scanf("%f", &stu_arr[i].scores[j]);
stu_arr[i].total += stu_arr[i].scores[j];
}
stu_arr[i].avg = stu_arr[i].total / MAX_COURSE_NUM;
}
}
// 按总分排序
void sort_by_total() {
struct student temp;
for (int i = 0; i < stu_count - 1; i++) {
for (int j = i + 1; j < stu_count; j++) {
if (stu_arr[i].total < stu_arr[j].total) {
temp = stu_arr[i];
stu_arr[i] = stu_arr[j];
stu_arr[j] = temp;
}
}
}
printf("按总分排序后的结果如下:\n");
for (int i = 0; i < stu_count; i++) {
printf("姓名:%s,学号:%d,总分:%.2f,平均分:%.2f\n", stu_arr[i].name, stu_arr[i].id, stu_arr[i].total, stu_arr[i].avg);
}
}
// 查找学生信息
void find_stu() {
int id;
printf("请输入要查找的学生学号:");
scanf("%d", &id);
for (int i = 0; i < stu_count; i++) {
if (stu_arr[i].id == id) {
printf("姓名:%s,学号:%d,各门课程成绩如下:", stu_arr[i].name, stu_arr[i].id);
for (int j = 0; j < MAX_COURSE_NUM; j++) {
printf("%.2f\t", stu_arr[i].scores[j]);
}
printf("\n");
return;
}
}
printf("未找到该学生!\n");
}
int main() {
int choice;
while (1) {
show_menu();
scanf("%d", &choice);
switch (choice) {
case 1:
input_scores();
break;
case 2:
sort_by_total();
break;
case 3:
find_stu();
break;
case 4:
exit(0);
default:
printf("输入错误,请重新输入!\n");
break;
}
}
return 0;
}
```
希望对您有所帮助!