bilibili620
若笑丶红尘
采纳率0%
2017-05-27 08:42

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

3

![图片说明

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • fight_in_dl 战在春秋 4年前

    代码如下:

    #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);
    }
    

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

    测试结果如下:
    图片说明

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

    点赞 1 评论 复制链接分享
  • m294955408 偷偷的挂掉 4年前

    你们老师也是辛苦。给你个现写的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;
    }
    
    
    点赞 评论 复制链接分享
  • m294955408 偷偷的挂掉 4年前

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

    点赞 评论 复制链接分享
  • bilibili620 若笑丶红尘 4年前

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

    点赞 评论 复制链接分享
  • bilibili620 若笑丶红尘 4年前

    图片说明

    点赞 评论 复制链接分享
  • m294955408 偷偷的挂掉 4年前

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

    点赞 评论 复制链接分享