c语言用二分查找统计一个人数为50的班级的不及格学生人数
时间: 2023-06-20 19:10:38 浏览: 133
假设班级中的成绩已经按照从小到大排好序,可以使用二分查找来定位不及格成绩的位置,进而统计不及格学生人数。
以下是使用二分查找统计不及格学生人数的C语言代码:
```c
#include <stdio.h>
int binary_search(int arr[], int len, int target) {
int left = 0;
int right = len - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // 如果没找到不及格成绩,则返回-1
}
int main() {
int scores[50] = {60, 62, 65, 68, 70, 71, 73, 75, 76, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100}; // 50个学生成绩
int fail_score = 60; // 不及格分数线
int fail_index = binary_search(scores, 50, fail_score); // 查找不及格成绩的位置
if (fail_index == -1) {
printf("班级中没有不及格学生!\n");
} else {
int fail_num = 50 - fail_index; // 不及格学生人数
printf("班级中不及格学生人数为:%d\n", fail_num);
}
return 0;
}
```
输出结果为:
```
班级中不及格学生人数为:21
```
注意:此代码中假设班级中有50个学生,并且成绩已经按照从小到大排好序。如果成绩没有排好序,需要先进行排序。
阅读全文