diff --git a/chengxu4(1).cpp b/chengxu4(1).cpp new file mode 100644 index 0000000..1acdf6a --- /dev/null +++ b/chengxu4(1).cpp @@ -0,0 +1,70 @@ +#include + +struct Student { + int student_id; + int class_id; + float math_score; + float physics_score; + float english_score; +}; + + + +int main() { + struct Student students[4] = { + {10001, 11, 99.5, 88.5, 89.5}, + {10002, 12, 77.9, 56.5, 87.5}, + {10003, 11, 92.5, 99.0, 60.5} + }; + + int new_student_id, new_class_id; + float new_math_score, new_physics_score, new_english_score; + + scanf("%d %d %f %f %f", &new_student_id, &new_class_id, &new_math_score, &new_physics_score, &new_english_score); + + // 检查新输入的学号是否已存在 + int exist = 0; + for (int i = 0; i < 3; i++) { + if (new_student_id == students[i].student_id) { + exist = 1; + break; + } + } + + if (exist == 1) { + printf("已存在学号的信息\n"); + } else { + students[3].student_id = new_student_id; + students[3].class_id = new_class_id; + students[3].math_score = new_math_score; + students[3].physics_score = new_physics_score; + students[3].english_score = new_english_score; + + // 插入排序,按班级和总成绩进行排序 + for (int i = 1; i < 4; i++) { + struct Student temp = students[i]; + int j = i - 1; + while (j >= 0 && (temp.class_id < students[j].class_id || (temp.class_id == students[j].class_id && temp.math_score + temp.physics_score + temp.english_score > students[j].math_score + students[j].physics_score + students[j].english_score))) { + students[j + 1] = students[j]; + j--; + } + students[j + 1] = temp; + } + + + } + + for (int i = 0; i < 4; i++) { + if(students[i].student_id==new_student_id) + { + printf("%d %d %.1f %.1f %.1f inserted\n", students[i].student_id, students[i].class_id, + students[i].math_score, students[i].physics_score, students[i].english_score); + } + else{ + printf("%d %d %.1f %.1f %.1f\n", students[i].student_id, students[i].class_id, + students[i].math_score, students[i].physics_score, students[i].english_score); + } + } + return 0; + +}