编写程序统计某班程序设计期末考试成绩,有最多不超过30人参加考试,编写程序使用选择排序算法,给班级的成绩进行排序,并在排好序的基础上,使用折半查找,找到某个成绩在数组的位置。C语言
时间: 2023-11-29 22:06:17 浏览: 118
C语言程序设计-编写函数用选择排序法对数组中的数据进行从小到大的排序;
5星 · 资源好评率100%
好的,下面是实现该功能的 C 语言代码:
```c
#include <stdio.h>
#define MAX_SIZE 30
void selection_sort(int arr[], int n);
int binary_search(int arr[], int n, int target);
int main() {
int scores[MAX_SIZE];
int n, i, target;
printf("请输入考生人数(不超过30人):");
scanf("%d", &n);
printf("请输入每个考生的成绩:\n");
for (i = 0; i < n; i++) {
scanf("%d", &scores[i]);
}
// 使用选择排序算法对成绩进行排序
selection_sort(scores, n);
// 打印排序后的成绩
printf("成绩排序后为:\n");
for (i = 0; i < n; i++) {
printf("%d ", scores[i]);
}
printf("\n");
// 使用折半查找算法查找某个成绩在数组的位置
printf("请输入要查找的成绩:");
scanf("%d", &target);
int index = binary_search(scores, n, target);
if (index == -1) {
printf("该成绩不存在\n");
} else {
printf("该成绩在数组的位置为:%d\n", index);
}
return 0;
}
// 选择排序算法
void selection_sort(int arr[], int n) {
int i, j, min_idx, temp;
for (i = 0; i < n - 1; i++) {
min_idx = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
// 折半查找算法
int binary_search(int arr[], int n, int target) {
int left = 0, right = n - 1, mid;
while (left <= right) {
mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
```
这段代码实现了对某班程序设计期末考试成绩的统计、排序和查找功能。其中,`selection_sort` 函数使用选择排序算法对成绩进行排序,`binary_search` 函数使用折半查找算法查找某个成绩在数组的位置。在 `main` 函数中,我们先输入考生人数和每个考生的成绩,然后调用 `selection_sort` 函数对成绩进行排序,并打印排序后的成绩。接着,我们输入要查找的成绩,调用 `binary_search` 函数进行查找,并打印结果。
阅读全文