![
用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);
}
代码不算复杂,因为试验室人数不定,所以需要动态创建结构体数组,以及指针操作。
测试结果如下:
用心回答每个问题,如果对您有帮助,请采纳答案好吗,谢谢。