每日刷题 考勤刷卡
一.题目
二.题目要求
1.输入描述 输入的第一行包含一个正整数 n,表示一天中所有员工的刷卡记录的条数。 接下来 n 行, 每行包含一条刷卡记录, 每条刷卡记录的格式为:
HH:MM:SS ID
其中 HH:MM: SS表示刷卡时间, HH 为一个0到23之间的两位十进制整数 (可能含前导 0) 表示时, MM 为一个0到 59之间的两位十进制整数(可能含前导0) 表示分, SS 为一个0到59之间的两位十进制整数(可能含前导0) 表示秒, ID 为一个不含前导0的整数表示员工的编号。
所有记录按照刷卡时间升序排列, 可能同一时刻有多人刷卡。
2.输出格式 输出若干行, 每行包含一个整数, 按照从小到大的顺序输出, 表示到岗员工的编号。
三.思路分析
根据题干要求,采用sort函数(在c++里面,用于给定区间的所有元素排序,默认升序排序)
在用else if语句判断有没有员工重复打卡
四.代码
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n,x;
string a;//除去时间
scanf("%d",&n);
int di[n];
for(int i=0;i<n;i++)
{
cin>>a>>di[i];
}
sort(di,di+n);//对数据排序
x=di[0];
for(int i=0;i<n;i++)
{
if(i==0)
printf("%d\n\n",di[i]);
else
{
if(x==di[i])//与前面相同不输出
{
x=di[i];
continue;
}
else
{
x=di[i];
printf("%d\n\n",di[i]);
}
}
}
return 0;
}
五.运行效果


浙公网安备 33010602011771号