// 计算指定课程编号下的不及格人数和不及格率
void countFailedForCourse(struct Lstudent* studentsHead, int targetCourseId) {
int failCount = 0;
int totalEnrolled = 0;
while (studentsHead != NULL) {
CourseListNode* courseNode = studentsHead->chead;
while (courseNode != NULL) {
if (courseNode->data.daihao == targetCourseId) {
totalEnrolled++;
if (courseNode->data.chengji < 60) {
failCount++;
}
}
courseNode = courseNode->next;
}
studentsHead = studentsHead->next;
}
float failRate = 0.0;
if (totalEnrolled > 0) {
failRate = (float)failCount / totalEnrolled * 100.0;
}
printf("课程编号 %d 下,不及格人数为 %d,不及格率为 %.2f%%\n", targetCourseId, failCount, failRate);
}
int main() {
// 初始化链表
struct Lstudent* head = NULL; // 初始化为空指针
load(&head,"信息.txt");
KGPA(head);
ZGPA(head);
if (head != NULL) {
// 打印链表信息
printStudentListAndCourses(head);
// 其他对链表的操作...
} else {
printf("没有读取到任何学生信息。\n");
}
int targetCourseId;
printf("请输入要查询的课程编号:");
scanf("%d", &targetCourseId);
countFailedForCourse(head, targetCourseId);