编程实现10个学生的成绩管理系统,学生信息包括:学生学号、姓名和3门课程的成绩及平均成绩。要求如下: (1)在主函数中编写一个提示菜单,根据输入菜单的编号调用相应函数。 (2)用input函数来输入数据 (3)用aver函数求各学生的平均成绩。 (4)用sort函数实现按学生平均成绩排序。 (5)用print函数来输出所有学生的信息。用c语言
时间: 2024-02-28 16:54:02 浏览: 195
c代码-编程实现:输入10个学生的6门课成绩,分别求出每个学生的平均成绩。
好的,这是一个使用 C 语言实现学生成绩管理系统的问题,我会帮您解答。
首先,我们需要定义一个学生结构体,包含学号、姓名、3门课程的成绩和平均成绩。然后,我们需要写一个函数用来输入学生信息,一个函数用来计算平均成绩,一个函数用来排序,最后一个函数用来输出所有学生的信息。
下面是一个可能的解决方案:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUM_STUDENTS 10
typedef struct {
char id[20];
char name[20];
float score1;
float score2;
float score3;
float average_score;
} Student;
void input_students(Student students[]);
void average(Student students[]);
void sort(Student students[]);
void print_students(Student students[]);
int main() {
Student students[NUM_STUDENTS];
int choice;
do {
printf("请输入数字选择操作:\n");
printf("1. 输入学生信息\n");
printf("2. 计算平均成绩\n");
printf("3. 按平均成绩排序\n");
printf("4. 输出所有学生信息\n");
printf("0. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
input_students(students);
break;
case 2:
average(students);
break;
case 3:
sort(students);
break;
case 4:
print_students(students);
break;
case 0:
printf("程序已退出。\n");
break;
default:
printf("输入无效,请重新输入。\n");
}
} while (choice != 0);
return 0;
}
void input_students(Student students[]) {
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的学号:", i+1);
scanf("%s", students[i].id);
printf("请输入第%d个学生的姓名:", i+1);
scanf("%s", students[i].name);
printf("请输入第%d个学生的第一门课程成绩:", i+1);
scanf("%f", &students[i].score1);
printf("请输入第%d个学生的第二门课程成绩:", i+1);
scanf("%f", &students[i].score2);
printf("请输入第%d个学生的第三门课程成绩:", i+1);
scanf("%f", &students[i].score3);
}
}
void average(Student students[]) {
for (int i = 0; i < NUM_STUDENTS; i++) {
students[i].average_score = (students[i].score1 + students[i].score2 + students[i].score3) / 3;
}
}
void sort(Student students[]) {
for (int i = 0; i < NUM_STUDENTS - 1; i++) {
for (int j = i + 1; j < NUM_STUDENTS; j++) {
if (students[i].average_score < students[j].average_score) {
Student temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
}
void print_students(Student students[]) {
printf("学号\t姓名\t成绩1\t成绩2\t成绩3\t平均成绩\n");
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", students[i].id, students[i].name, students[i].score1, students[i].score2, students[i].score3, students[i].average_score);
}
}
```
在主函数中,我们使用一个循环来实现菜单的提示,根据输入的数字调用相应的函数。输入学生信息和输出学生信息的方式都是使用 printf 和 scanf。排序函数使用了冒泡排序的方式,按平均成绩从高到低排序。
阅读全文