void Search(LinkList L, char *name) { LNode *p = L; int flag = 0; while (p != NULL) { if (strcmp(p->data.name, name) == 0 || p->data.id == atoi(name)) { printf("姓名:%s,学号:%d,成绩:%d\n", p->data.name, p->data.id, p->data.score); flag = 1; } p = p->next; } if (!flag) { printf("未找到该学生信息!\n"); } } // 统计各分数段的学生人数及其所占比例 void Stat(LinkList L) { int cnt[5] = {0}, total = 0; LNode *p = L; while (p != NULL) { if (p->data.score >= 90) { cnt[0]++; } else if (p->data.score >= 80) { cnt[1]++; } else if (p->data.score >= 70) { cnt[2]++; } else if (p->data.score >= 60) { cnt[3]++; } else { cnt[4]++; } total++; p = p->next; } printf("≥90分的学生人数:%d,所占比例:%.2f%%\n", cnt[0], cnt[0] * 100.0 / total); printf("80-89分的学生人数:%d,所占比例:%.2f%%\n", cnt[1], cnt[1] * 100.0 / total); printf("70-79分的学生人数:%d,所占比例:%.2f%%\n", cnt[2], cnt[2] * 100.0 / total); printf("60-69分的学生人数:%d,所占比例:%.2f%%\n", cnt[3], cnt[3] * 100.0 / total); printf("60分以下的学生人数:%d,所占比例:%.2f%%\n", cnt[4], cnt[4] * 100.0 / total); }对代码进行评价
时间: 2024-04-01 14:37:05 浏览: 54
单链表.cpp
该代码实现了一个简单的学生成绩管理系统,其中包含两个函数:Search和Stat。
Search函数实现了根据姓名或学号搜索学生信息的功能,它采用遍历链表的方式来查找学生信息,时间复杂度为O(n),其中n为链表中的学生个数。该函数还使用了一个flag标记来判断是否找到了对应的学生信息。
Stat函数实现了统计各分数段学生人数及其所占比例的功能,它同样采用遍历链表的方式来遍历每个学生的成绩,并根据成绩的不同将学生分到不同的分数段中,最后输出各分数段学生人数及占比。时间复杂度同样为O(n)。
总体来说,该代码实现简单,易于理解,并且具有一定的实用性。但是,该代码没有考虑到一些边界情况,例如链表为空,或者存在多个姓名或学号相同的学生等,需要在实际应用中进行相应的优化和完善。
阅读全文