1

我似乎找不到错误,帮助:我正在尝试输入 n,然后输入 n 个整数。然后输出这 n 个整数的中位数。n 是奇数和正数。n 小于 100 万。

样本输入 5 37 28 21 44 49

样本输出 37

#include <stdio.h>
#include <stdlib.h>
#define INTEGERS 6


int numbers[6];

int compare(const void * a, const void * b) {
    return ( *(int*) a - *(int*) b);
}

int main() {
    int n, i;

    for (i = 0; i < 6; i++) {
        printf("Enter numbers:");
        scanf("%d", numbers[i]);

    }

    qsort(numbers, INTEGERS, sizeof (int), compare);
    for (n = 0; n < INTEGERS; n++) {
        printf("%d ", numbers[n]);
    }
    printf("\n%d ", numbers[INTEGERS / 2]);
    return 0;
}
4

1 回答 1

4

Scanf 需要一个内存地址,而不是一个值。

尝试:

#include <stdio.h>
#include <stdlib.h>
#define INTEGERS 6


int numbers[INTEGERS];

int compare(const void * a, const void * b) {
    return ( *(int*) a - *(int*) b);
}

int main() {
    int n, i;

    printf("Enter numbers:");
    for (i = 0; i < INTEGERS; i++) {
        scanf("%d", &numbers[i]);
    }

    qsort(numbers, INTEGERS, sizeof (int), compare);
    for (n = 0; n < INTEGERS; n++) {
        printf("%d ", numbers[n]);
    }
    printf("\n%d ", numbers[INTEGERS / 2]);
    return 0;
}
于 2012-08-16T00:57:41.223 回答