改进以下程序使其做到学号唯一性void input_new_record() { if (student_num == MAX_STUDENT_NUM) { printf("班级已满,无法添加新记录!\n"); return; } printf("请输入学生信息:\n"); while (1) { printf("学号:"); scanf("%s", students[student_num].id); int flag = 1; // 标记该学号是否已经存在 for (int i = 0; i < student_num; i++) { if (strcmp(students[i].id, students[student_num].id) == 0) { flag = 0; printf("该学号已经存在,请重新输入!\n"); break; } } if (flag) { break; } } printf("姓名:"); scanf("%s", students[student_num].name); for (int j = 0; j < COURSE_NUM; j++) { printf("课程%d:", j+1); scanf("%f", &students[student_num].courses[j]); students[student_num].avg += students[student_num].courses[j]; } students[student_num].avg /= COURSE_NUM; student_num++; printf("添加成功!\n"); }
时间: 2024-02-14 22:14:11 浏览: 29
可以在输入新记录时,加入一个判断学号唯一性的步骤,如果学号已经存在,则要求重新输入,直到输入的学号是唯一的为止。可以修改程序如下:
void input_new_record() {
if (student_num == MAX_STUDENT_NUM) {
printf("班级已满,无法添加新记录!\n");
return;
}
printf("请输入学生信息:\n");
while (1) {
int flag = 1; // 标记该学号是否已经存在
printf("学号:");
scanf("%s", students[student_num].id);
// 判断学号是否唯一
for (int i = 0; i < student_num; i++) {
if (strcmp(students[i].id, students[student_num].id) == 0) {
flag = 0;
printf("该学号已经存在,请重新输入!\n");
break;
}
}
if (flag) {
break;
}
}
printf("姓名:");
scanf("%s", students[student_num].name);
for (int j = 0; j < COURSE_NUM; j++) {
printf("课程%d:", j+1);
scanf("%f", &students[student_num].courses[j]);
students[student_num].avg += students[student_num].courses[j];
}
students[student_num].avg /= COURSE_NUM;
student_num++;
printf("添加成功!\n");
}