将以下c++代码转换为c语言#include <iostream> #include <vector> #include <algorithm> #include <utility> using namespace std; int main() { int n; cin >> n; // 输入集合 A 的元素个数 vector<int> elements(n); for (int i = 0; i < n; ++i) { cin >> elements[i]; // 输入集合 A 的元素 } vector<pair<int, int> > edges; // 存储边的向量 // 遍历集合 A 中的元素 for (int i = 0; i < n; ++i) { for (int j = i + 1; j < n; ++j) { // 判断是否满足整除关系 if (elements[j] % elements[i] == 0) { edges.push_back(make_pair(elements[i], elements[j])); } } } // 按字典顺序排序边 sort(edges.begin(), edges.end()); // 输出边 for (vector<pair<int, int> >::const_iterator it = edges.begin(); it != edges.end(); ++it) { cout << it->first << " " << it->second << endl; } return 0; }
时间: 2024-02-16 10:09:52 浏览: 61
以下是将上述代码转换为C语言的结果:
```c
#include<stdio.h>
#include<stdlib.h>
typedef struct pair {
int first;
int second;
} Pair;
int compare(const void *a, const void *b) {
Pair *p1 = (Pair *) a;
Pair *p2 = (Pair *) b;
if (p1->first != p2->first) {
return p1->first - p2->first;
} else {
return p1->second - p2->second;
}
}
int main() {
int n;
scanf("%d", &n); // 输入集合 A 的元素个数
int *elements = (int *) malloc(sizeof(int) * n);
for (int i = 0; i < n; i++) {
scanf("%d", &elements[i]); // 输入集合 A 的元素
}
Pair *edges = (Pair *) malloc(sizeof(Pair) * n * (n - 1) / 2);
int count = 0;
// 遍历集合 A 中的元素
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
// 判断是否满足整除关系
if (elements[j] % elements[i] == 0) {
edges[count].first = elements[i];
edges[count].second = elements[j];
count++;
}
}
}
// 按字典顺序排序边
qsort(edges, count, sizeof(Pair), compare);
// 输出边
for (int i = 0; i < count; i++) {
printf("%d %d\n", edges[i].first, edges[i].second);
}
free(elements);
free(edges);
return 0;
}
```
阅读全文