You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.1 KiB
74 lines
2.1 KiB
2 weeks ago
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
// 定义结构体表示学生信息
|
||
|
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;
|
||
|
}
|