这题怎么做!!急急急!!!

![图片说明

用C来做,但是遇到问题了.

遇到什么问题,直接贴代码吧

图片说明

但是我总觉得错了很多...但是不会做...

。。。是错了很多。。。时间定义为Int,根本不能按照题目中要求的输进去的

你们老师也是辛苦。给你个现写的C++代码参考,不保证完全正确。

 #include <iostream>
#include <string>
using namespace std;

typedef struct
{
    string no;
    string start_time;
    string end_time;
} Member;

bool DateComare(string first_date, string second_date)
{
    int first_hour = atoi(first_date.substr(0, 2).c_str());
    int second_hour = atoi(second_date.substr(0, 2).c_str());

    if (first_hour > second_hour) return true;
    else return false;

    int first_miniute = atoi(first_date.substr(3, 2).c_str());
    int second_miniute = atoi(second_date.substr(3, 2).c_str());

    if (first_miniute > second_miniute) return true;
    else return false;

    int first_second = atoi(first_date.substr(6, 2).c_str());
    int second_second = atoi(second_date.substr(6, 2).c_str());

    if (first_second > second_second) return true;
    else return false;
}

int main()
{
    int n;
    Member open_member, close_member;

    while (cin >> n)
    {
        for (int i = 0; i < n; i++)
        {
            Member member;
            cin >> member.no >> member.start_time >> member.end_time;

            if (i == 0)
            {
                open_member = close_member = member;
            }
            else
            {
                if (DateComare(open_member.start_time, member.start_time))
                {
                    open_member = member;
                }

                if (!DateComare(close_member.end_time, member.end_time))
                {
                    close_member = member;
                }
            }
        }

        cout << "OPEN: " << open_member.no << " " << open_member.start_time << endl;
        cout << "CLOSE: " << close_member.no << " " << close_member.end_time << endl;
    }

    return 0;
}

代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct member
{
    char id[20];
    char stime[20];
    char otime[20];
};

int main() 
{
    int totalCount;
    int earliest = 0;
    int latest = 0;

    printf("请输入人数,要求小于20\n");
    scanf("%d", &totalCount);

    printf("\n试验室总人数为:%d\n", totalCount);
    struct member *didi = (struct member*)malloc(sizeof(struct member) * totalCount); //动态创建结构体数组
    for (int i = 0; i < totalCount; i++)
    {
        printf("请输入第%d个人的id和进出时间:\n",i+1);
        scanf("%s %s %s", (didi+ i)->id, (didi + i)->stime, (didi + i)->otime);
    }
    for (int i = 0; i < totalCount - 1; i++)
    {
        if (strcmp((didi + i + 1)->stime, (didi + i)->stime ) < 0)
        {
            earliest = i + 1;
        }
        if (strcmp((didi + i + 1)->stime, (didi + i)->stime) > 0)
        {
            latest = i + 1;
        }
        printf("\n");
    }

    printf("Open: %s %s \n", (didi + earliest)->id, (didi + earliest)->stime);
    printf("Close: %s %s \n", (didi + latest)->id, (didi + latest)->otime);
}

代码不算复杂,因为试验室人数不定,所以需要动态创建结构体数组,以及指针操作。

测试结果如下:
图片说明

用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢。