来地球玩 2021-12-22 18:20 采纳率: 90%
浏览 31
已结题

C++这个程序怎么写

每天开始时,在机房里签到的第一个人会开门,最后一个签出的人会锁门。鉴于登录和注销的记录,您应该找到当天解锁并锁定门的人。

输入

每个输入文件包含一个测试用例。每个事例都包含一天的记录。该事例以正整数 M 开头,这是记录的总数,后跟 M 行,每行的格式为:

ID_number Sign_in_time Sign_out_time
其中时间以 HH:MM:SS 格式给出,ID 号是不超过 15 个字符的字符串。

输出

对于每个测试用例,在一行中输出当天解锁并锁定门的人员的 ID 号。两个 ID 号必须用一个空格分隔。

注意:可以保证记录是一致的。也就是说,签到时间必须早于每个人的签出时间,并且没有两个人同时登录或注销。

样例输入

3
CS301111 15:30:28 17:00:10
SC3021234 08:00:00 11:25:25
CS301133 21:45:00 21:58:40

样例输出

SC3021234 CS301133

题目来源

  • 写回答

2条回答 默认 最新

  • 书山客 2021-12-22 21:08
    关注
    
    
    #include<stdio.h>
    #include<string.h>
    #include <math.h>
    int main()
    {
        int M = 0;
        scanf("%d",&M);
        char str[100][3][15];
        for (int i = 0; i < M; i++)
        {
            scanf("%s%s%s",&str[i][0], &str[i][1], &str[i][2]);
        }
        char Sign_in_time[15];
        char Sign_out_time[15];
        strcpy(Sign_in_time,str[0][1]);
        strcpy(Sign_out_time, str[0][2]);
        int num_in = 0;
        int num_out = 0;
        for (int i = 0; i < M; i++)
        {
            if (strcmp(Sign_in_time,str[i][1])>0)
            {
                strcpy(Sign_in_time, str[i][1]);
                num_in = i;
            }
            if (strcmp(Sign_out_time, str[i][2]) < 0)
            {
                strcpy(Sign_out_time, str[i][2]);
                num_out = i;
            }
        }
        printf("%s %s", str[num_in][0], str[num_out][0]);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月30日
  • 已采纳回答 12月22日
  • 创建了问题 12月22日

悬赏问题

  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数