将c++语言转为c语言#include <iostream> #include <algorithm> using namespace std; struct Node { int value; int i; }; bool cmp(Node a, Node b) { return a.value < b.value; } int main() { int n, k; cin >> n >> k; Node* arr = new Node[n]; for (int i = 0; i < n; i++) { cin >> arr[i].value >> arr[i].i; } sort(arr, arr + n, cmp); for (int i = 0; i < k; i++) { cout << arr[i].i; if (i != k - 1) { cout << " "; } } delete[] arr; return 0; }
时间: 2024-03-11 14:48:35 浏览: 63
好的,以下是将C++代码转换为C语言的版本:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int value;
int i;
} Node;
int cmp(const void* a, const void* b) {
return ((Node*)a)->value - ((Node*)b)->value;
}
int main() {
int n, k;
scanf("%d%d", &n, &k);
Node* arr = (Node*)malloc(n * sizeof(Node));
for (int i = 0; i < n; i++) {
scanf("%d%d", &arr[i].value, &arr[i].i);
}
qsort(arr, n, sizeof(Node), cmp);
for (int i = 0; i < k; i++) {
printf("%d", arr[i].i);
if (i != k - 1) {
printf(" ");
}
}
free(arr);
return 0;
}
```
我们使用了`typedef`关键字定义了结构体`Node`。对于排序函数`cmp`,我们使用了C语言标准库中的`qsort`函数。在输入和输出方面,我们使用了`scanf`和`printf`函数,分别代替了C++中的`cin`和`cout`函数。
注意,我们使用了动态数组`arr`,在程序结束后要记得使用`free`函数释放内存。
阅读全文