int SearchByName(struct student stu[], int n, char *name) { int left = 0, right = n - 1; while (left <= right) { int mid = (left + right) / 2; if (strcmp(stu[mid].name, name) == 0) { return mid; } else if (strcmp(stu[mid].name, name) > 0) { right = mid - 1; } else { left = mid + 1; } } return -1; }为什么查询不了第一个
时间: 2024-02-14 15:22:43 浏览: 53
使用结构体数组,利用函数实现按学生学号和姓名的查询操作.c
可能是因为在调用该函数时,传入的结构体数组 `stu` 中第一个元素的 `name` 字符串与要查找的 `name` 字符串不匹配,导致在二分查找时未能找到该元素的位置,最终返回了 -1。
另外,如果结构体数组 `stu` 中的元素并没有按照 `name` 字符串的字典序进行排序,那么该函数的返回结果也可能不准确。因为二分查找算法要求在有序的数组中进行查找。
阅读全文