diff --git a/b4.c b/b4.c new file mode 100644 index 0000000..f17820c --- /dev/null +++ b/b4.c @@ -0,0 +1,82 @@ +#include +#include + + struct Student { + int id; + int classNum; + float score1; + float score2; + float score3; +} Student; + +int compareStudents( struct Student studentA, struct Student studentB) + { + if (studentA.classNum < studentB.classNum) { + return -1; + } else if (studentA.classNum > studentB.classNum) { + return 1; + } else { + float totalScoreA = studentA.score1 + studentA.score2 + studentA.score3; + float totalScoreB = studentB.score1 + studentB.score2 + studentB.score3; + if (totalScoreA > totalScoreB) { + return -1; + } else if (totalScoreA < totalScoreB) { + return 1; + } else { + return 0; + } + } +} + +int main() { + struct Student students[4]; + students[0].id = 10001; + students[0].classNum = 11; + students[0].score1 = 99.5; + students[0].score2 = 88.5; + students[0].score3 = 89.5; + + students[1].id = 10002; + students[1].classNum = 12; + students[1].score1 = 77.9; + students[1].score2 = 56.5; + students[1].score3 = 87.5; + + students[2].id = 10003; + students[2].classNum = 11; + students[2].score1 = 92.5; + students[2].score2 = 99.0; + students[2].score3 = 60.5; + + struct Student newStudent; + + scanf("%d %d %f %f %f", &newStudent.id, &newStudent.classNum, &newStudent.score1, &newStudent.score2, &newStudent.score3); + + int isExist = 0; + int i; + for (i = 0; i < 3; i++) { + if (newStudent.id == students[i].id) { + isExist = 1; + break; + } + } + if (isExist) { + printf("id had exsited"); + printf("%d %d %.1f %.1f %.1f\n", students[0].id, students[0].classNum, students[0].score1, students[0].score2, students[0].score3); + return 0; + } + + students[3] = newStudent; + qsort(students, 4, sizeof(Student), compareStudents); + + for (i = 0; i < 4; i++) { + printf("%d %d %.1f %.1f %.1f", students[i].id, students[i].classNum, students[i].score1, students[i].score2, students[i].score3); + if (students[i].id == newStudent.id) { + printf(" inserted\n"); + } else { + printf("\n"); + } + } + + return 0; +}