diff --git a/学籍管理系统3.cpp b/学籍管理系统3.cpp new file mode 100644 index 0000000..1e87099 --- /dev/null +++ b/学籍管理系统3.cpp @@ -0,0 +1,74 @@ +#include +#include +#include + +// 定义结构体表示学生信息 +typedef struct Student { + int id; + double mathScore; + double physicsScore; + double englishScore; + double totalScore; + double averageScore; +} Student; + +// 交换两个学生结构体的内容 +void swap(Student *a, Student *b) { + Student temp = *a; + *a = *b; + *b = temp; +} + +// 按照总成绩对学生数组进行排序(冒泡排序示例,可替换为更高效的排序算法) +void sortStudents(Student students[], int numStudents) { + for (int i = 0; i < numStudents - 1; i++) { + for (int j = 0; j < numStudents - i - 1; j++) { + if (students[j].totalScore > students[j + 1].totalScore) { + swap(&students[j], &students[j + 1]); + } + } + } +} + +int main() { + Student students[3]; + char choice; + + // 显示主菜单 + printf(" 1.Input\n"); + printf(" 2.Output\n"); + printf(" 3.Order\n"); + printf(" 4.Quit\n"); + + scanf(" %c", &choice); + switch (choice) { + case 'i': + printf("Please input info of the three students:\n"); + for (int i = 0; i < 3; i++) { + scanf("%d", &students[i].id); + scanf("%lf", &students[i].mathScore); + scanf("%lf", &students[i].physicsScore); + scanf("%lf", &students[i].englishScore); + students[i].totalScore = students[i].mathScore + students[i].physicsScore + students[i].englishScore; + students[i].averageScore = students[i].totalScore / 3; + } + + sortStudents(students, 3); + + for (int i = 0; i < 3; i++) { + printf("%d,%.1lf,%.1lf\n", students[i].id, students[i].totalScore, students[i].averageScore); + } + break; + case 'm': + printf("You are trying to Make things ordered\n"); + break; + case 'q': + printf("You are about to Quit\n"); + break; + default: + printf("Wrong input\n"); + break; + } + + return 0; +} \ No newline at end of file