用C语言实现以下功能:给定n个数字,找出前m大的数字。 输入 多组输入,每组输入格式如下。 第一行包含两个整数n m。(n<=100000, m>0) 第二行包含n个正整数。 输出 输出前m大的数字,若m>n输出ERROR。每组输出占一行。
时间: 2024-02-12 09:04:04 浏览: 70
以下是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;
while (scanf("%d%d", &n, &m) == 2) {
int num[n];
for (int i = 0; i < n; i++) {
scanf("%d", &num[i]);
}
if (m > n) {
printf("ERROR\n");
continue;
}
qsort(num, n, sizeof(int), cmp);
for (int i = 0; i < m; i++) {
printf("%d\n", num[i]);
}
}
return 0;
}
```
代码思路解析:
首先,我们使用了 `scanf` 函数来读取输入。由于有多组输入,我们使用了 `while` 循环来重复读取输入。
然后,我们使用一个数组 `num` 来存储输入的 `n` 个数字。接着,我们判断如果 `m` 大于 `n`,就输出 `ERROR` 并跳过当前输入,否则就对数组进行快速排序,将数组中的数字按从大到小的顺序排列。
最后,我们输出前 `m` 大的数字即可。
阅读全文