2 条题解
-
-1
方法思路
定义结构体:创建 Schedule 结构体,包含日期 x 和时间 y。
读取输入:先读取日程数量 n,再读取 n 条日程的日期和时间。
排序:使用 qsort 函数对日程数组排序,排序规则为:
若日期不同,按日期升序排列;
若日期相同,按时间升序排列。
输出结果:遍历排序后的数组,输出每条日程的日期和时间。#include <stdio.h> #include <stdlib.h> // 定义日程结构体:包含日期x和时间y typedef struct { int x; int y; } Schedule; // qsort的比较函数:先按x升序,x相同时按y升序 int compare(const void *a, const void *b) { Schedule *s1 = (Schedule *)a; Schedule *s2 = (Schedule *)b; if (s1->x != s2->x) { return s1->x - s2->x; // 日期不同,返回日期差(升序) } else { return s1->y - s2->y; // 日期相同,返回时间差(升序) } } int main() { int n; scanf("%d", &n); // 读取日程数量 Schedule schedules[100]; // 存储最多100条日程(题目中n≤100) // 读取每条日程的日期和时间 for (int i = 0; i < n; ++i) { scanf("%d %d", &schedules[i].x, &schedules[i].y); } // 对日程数组进行排序 qsort(schedules, n, sizeof(Schedule), compare); // 输出排序后的日程 for (int i = 0; i < n; ++i) { printf("%d %d\n", schedules[i].x, schedules[i].y); } return 0; }
信息
- ID
- 618
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 24
- 已通过
- 6
- 上传者