C语言实现以下功能:给定n个数字,找出前m大的数字。 输入 多组输入,每组输入格式如下。 第一行包含两个整数n m。(n<=100000, m>0) 第二行包含n个正整数。 输出 输出前m大的数字,若m>n输出ERROR。每组输出占一行。
时间: 2024-02-11 15:08:36 浏览: 31
以下是C语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int cmp(const void* a, const void* b) {
return *(int*)b - *(int*)a;
}
int main() {
int n, m, i;
int* nums;
while (scanf("%d %d", &n, &m) == 2) {
nums = (int*)malloc(sizeof(int) * n);
for (i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
qsort(nums, n, sizeof(int), cmp);
if (m > n) {
printf("ERROR\n");
} else {
for (i = 0; i < m; i++) {
printf("%d\n", nums[i]);
}
}
free(nums);
}
return 0;
}
```
解释:
这个程序会不断读入多组输入,每组输入包括n和m两个整数,以及n个正整数。首先将这n个数字存储到一个数组中,然后使用标准库函数`qsort()`对这个数组进行从大到小排序。如果m大于n,则输出"ERROR";否则输出数组中前m个数字。