xdoj考勤系统

//标题
//考勤系统
//
//类别
//时间限制
//1S
//
//内存限制
//256Kb
//
//问题描述
//实验室使用考勤系统对学生进行考勤。考勤系统会记录下每个学生一天内每次进出实验室的时间。
//每位学生有一个唯一编号,每条考勤记录包括学生的编号,进入时间、离开时间。
//给出所有学生一天的考勤记录,请统计每个学生在实验室工作的时间,并按照工作时间从长到短给出一天的统计表,工作时间相同时按编号从小到大排序。
//
//输入说明
//输入的第一行包含一个整数n,表示考勤记录条数。1≤n≤100,学生的编号为不超过100的正整数。
//接下来是n行,每行是一条考勤记录,每条记录包括学生编号k,进入时间t1和离开时间t2三项。
//t1和t2格式为“hh:mm”,即两位数表示的小时和两位数表示的分钟。例如14:20表示下午两点二十分,所有时间均为24小时制,且均为同一天内的时间。
//
//输出说明
//输出按工作时间和学生编号排序的统计表。统计表包含若干行,每行为一个学生的出勤记录,由学生编号和总工作时间构成,总工作时间以分钟为单位。
//
//输入样例
//5
//3 08:00 11:50
//1 09:00 12:00
//3 13:50 17:30
//1 14:00 18:00
//2 17:00 24:00
//
//输出样例
//3 450
//1 420
//2 420

#include<stdio.h>
struct table
{int hao[100];
 int n;
 char t1[100][5];
 char t2[100][5];
}k;
 int trans(char a[5])
 {int i,sum1=0,sum2=0;
  for(i=0;i<5;i++)
  {if(a[i]!=':'&&i<=2)
  {sum1=sum1*10+(a[i]-'0');
  }
  else if(i>2)
  {sum2=sum2*10+a[i]-'0';
  }
  }
  sum1=sum1*60+sum2;
  return sum1;
 }
int main()
{struct table k={{0},0,{'/0'},{'/0'}};
 int i,sum[100]={0};
 scanf("%d",&k.n);
 for(i=0;i<k.n;i++)
 {scanf("%d %s %s",&k.hao[i],&k.t1[i],&k.t2[i]);
 }
 for(i=0;i<k.n;i++)
 { sum[k.hao[i]]=sum[k.hao[i]]+(trans(k.t2[i])-trans(k.t1[i]));
 }
 for(i=0;i<100;i++)
 {if(sum[i]!=0)
  printf("%d %d\n",i,sum[i]);
 }
 return 0;
}

…25分
操蛋!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值