插入和删除信息

main
m7wzyfpis 2 years ago
parent 0ca82ec98e
commit 6980d80cd7

@ -0,0 +1,108 @@
#include <stdio.h>
#include <string.h>
struct Student {
int studentId;
int classId;
char name[50];
float scores[3];
};
struct Student students[100];
int numStudents = 3; // 已有的学生数量
void insertStudent(struct Student newStudent) {
int i, j;
// 检查学号是否已存在
for (i = 0; i < numStudents; i++) {
if (students[i].studentId == newStudent.studentId) {
printf("已存在学号为%d的学生信息。\n", newStudent.studentId);
return;
}
}
// 寻找插入位置
for (i = 0; i < numStudents; i++) {
if (students[i].classId > newStudent.classId || (students[i].classId == newStudent.classId && newStudent.scores[0] + newStudent.scores[1] + newStudent.scores[2] > students[i].scores[0] + students[i].scores[1] + students[i].scores[2])) {
break;
}
}
// 将插入位置之后的学生向后移动一个位置
for (j = numStudents - 1; j >= i; j--) {
students[j + 1] = students[j];
}
// 插入新的学生信息
students[i] = newStudent;
numStudents++;
printf("新的学生信息已插入。\n");
}
void deleteStudent(int studentId) {
int i, j;
// 查找要删除的学生信息的位置
for (i = 0; i < numStudents; i++) {
if (students[i].studentId == studentId) {
break;
}
}
// 如果找到了学生信息,则将之后的学生向前移动一个位置
if (i < numStudents) {
for (j = i + 1; j < numStudents; j++) {
students[j - 1] = students[j];
}
numStudents--;
printf("学生信息已删除。\n");
} else {
printf("未找到学号为%d的学生信息。\n", studentId);
}
}
void printStudents() {
for (int i = 0; i < numStudents; i++) {
printf("%d %d %s %.1f %.1f %.1f\n", students[i].studentId, students[i].classId, students[i].name, students[i].scores[0], students[i].scores[1], students[i].scores[2]);
}
}
int main() {
// 初始化已有的学生信息
students[0].studentId = 10001;
students[0].classId = 11;
strcpy(students[0].name, "Zhang");
students[0].scores[0] = 85;
students[0].scores[1] = 86;
students[0].scores[2] = 90;
students[1].studentId = 10002;
students[1].classId = 12;
strcpy(students[1].name, "Li");
students[1].scores[0] = 75;
students[1].scores[1] = 76;
students[1].scores[2] = 77;
students[2].studentId = 10003;
students[2].classId = 13;
strcpy(students[2].name, "Wang");
students[2].scores[0] = 95;
students[2].scores[1] = 96;
students[2].scores[2] = 97;
// 打印所有学生信息
printStudents();
// 插入新的学生信息
insertStudent((struct Student){10004, 14, "Liu", {88, 90, 92}});
printStudents();
// 删除学生信息
deleteStudent(10003);
printStudents();
return 0;
}
Loading…
Cancel
Save