1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #include <stdio.h>
- #include <stdlib.h>
- // 比较函数,用于排序
- int compare(const void *a, const void *b) {
- return (*(int *)a - *(int *)b);
- }
- int main() {
- int a[10]; // 数组a,无序
- int b[5]; // 数组b,升序
- int c[4] = {0}; // 结果数组c,包含4个元素,对应于b的前4个元素之间的区间
- int i, k;
- // 读取数组a
- for (i = 0; i < 10; ++i) {
- scanf("%d", &a[i]);
- }
- // 读取数组b
- for (i = 0; i < 5; ++i) {
- scanf("%d", &b[i]);
- }
- // 对数组a进行排序
- qsort(a, 10, sizeof(int), compare);
- printf("c = ");
- // 遍历数组b的每个区间[b[k], b[k+1]]
- for (k = 0; k < 4; ++k) {
- int left = 0; // 区间开始位置
- int right = 0; // 区间结束位置
- // 找到大于b[k]的第一个元素位置
- while (right < 10 && a[right] <= b[k]) {
- right++;
- }
- // 统计大于b[k]小于b[k+1]的元素个数
- while (right < 10 && a[right] < b[k + 1]) {
- right++;
- c[k]++;
- }
- }
- // 输出结果数组c
- for (i = 0; i < 4; ++i) {
- printf("%d ", c[i]);
- }
- printf("\n");
- return 0;
- }
|