#include<iostream> #include<algorithm> #include<vector> using namespace std; int main() { int n;cin>>n; vector<pair<string,string>> s; for(int i=0;i<n;i++) { string a,b,c;cin>>a>>c>>b; s.push_back({a,b}); } sort(s.begin(),s.end()); string la="-1"; for(auto &p:s) { if(la=="-1") { la=p.second; if(p.first!="00:00:00") cout<<"00:00:00 - "<<p.first<<endl; } else { if(la!=p.first) cout<<la<<" - "<<p.first<<endl; la=p.second; } } if(la!="23:59:59") cout<<la<<" - 23:59:59"<<endl; return 0; }
时间: 2024-04-22 17:25:30 浏览: 216
当将以上的C++代码转换为C代码时,需要进行一些调整。下面是转换后的C代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Pair {
char first[9];
char second[9];
};
int compare(const void* a, const void* b) {
struct Pair* pairA = (struct Pair*)a;
struct Pair* pairB = (struct Pair*)b;
return strcmp(pairA->first, pairB->first);
}
int main() {
int n;
scanf("%d", &n);
struct Pair* s = (struct Pair*)malloc(sizeof(struct Pair) * n);
for (int i = 0; i < n; i++) {
char a[9], b[9], c[9];
scanf("%s %s %s", a, c, b);
strcpy(s[i].first, a);
strcpy(s[i].second, b);
}
qsort(s, n, sizeof(struct Pair), compare);
char la[9] = "-1";
for (int i = 0; i < n; i++) {
if (strcmp(la, "-1") == 0) {
strcpy(la, s[i].second);
if (strcmp(s[i].first, "00:00:00") != 0)
printf("00:00:00 - %s\n", s[i].first);
}
else {
if (strcmp(la, s[i].first) != 0)
printf("%s - %s\n", la, s[i].first);
strcpy(la, s[i].second);
}
}
if (strcmp(la, "23:59:59") != 0)
printf("%s - 23:59:59\n", la);
free(s);
return 0;
}
```
注意:C语言没有内置的字符串类型,因此需要使用字符数组来表示字符串,并使用`strcpy`和`strcmp`函数来进行字符串的复制和比较。此外,C语言中的输入输出函数为`scanf`和`printf`,而不是C++中的`cin`和`cout`。另外,在排序时,需要使用`qsort`函数,并提供自定义的比较函数。最后,记得在程序结束后释放动态分配的内存。
阅读全文