概述
/*题目描述:
现有公园游船租赁处请你编写一个租船管理系统。当游客租船时,管理员输入船号并按下S键,系统开始计时;
当游客还船时,管理员输入船号并按下E键,系统结束计时。船号为不超过100的正整数。当管理员将0作为船号输入时,
表示一天租船工作结束,系统应输出当天的游客租船次数和平均租船时间。
注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有租船没有还船,或者只有还船没有租船的纪录,
系统应能自动忽略这种无效纪录。
输入:
测试输入包含若干测试用例,每个测试用例为一整天的租船纪录,格式为:
船号(1~100) 键值(S或E) 发生时间(小时:分钟)
每一天的纪录保证按时间递增的顺序给出。当读到船号为-1时,全部输入结束,相应的结果不要输出。
输出:
对每个测试用例输出1行,即当天的游客租船次数和平均租船时间(以分钟为单位的精确到个位的整数时间)。
样例输入:
1 S 08:10
2 S 08:35
1 E 10:00
2 E 13:16
0 S 17:00
0 S 17:00
3 E 08:10
1 S 08:20
2 S 09:00
1 E 09:20
0 E 17:00
-1
样例输出:
2 196
0 0
1 60
*/
#include <cstdio>
typedef struct{
int flag;
int s_h,s_m;
int e_h,e_m;
}chuan;
chuan t[105];
int main()
{
int number,hour,minute;
char c;
int i,total_time,time,ave_time;
// freopen("f:/in.txt","r",stdin);
while(scanf("%d",&number)!=EOF && number!=-1)
{
scanf(" %c %d:%d",&c,&hour,&minute);
//
最后一个回车 不用处理,因为下一行首次读入数字
for(i=0;i<105;i++)
t[i].flag=0;
total_time=time=0;
//
Initiate
if(0==number)
{
printf("0 0n");
continue;
}
else
{
if(c=='S')
{
t[number].flag=1;
t[number].s_h=hour;
t[number].s_m=minute;
}
}
while(scanf("%d %c %d:%d",&number,&c,&hour,&minute))
{
if(number==0)
break;
switch(c)
{
case 'S':
if(t[number].flag==0)
{
t[number].flag=1;
t[number].s_h=hour;
t[number].s_m=minute;
}
break;
case 'E':
if(t[number].flag==1)
{
t[number].flag=0;
t[number].e_h=hour;
t[number].e_m=minute;
total_time+=(t[number].e_h-t[number].s_h)*60+t[number].e_m-t[number].s_m;
time++;
}
break;
default:
break;
}
}
if(time==0)
{
printf("0 0n");
continue;
}
//
四舍五入
if((float)(total_time)/time-total_time/time>=0.5)
ave_time=total_time/time+1;
else
ave_time=total_time/time;
printf("%d %dn",time,ave_time);
}
// fclose(stdin);
return 0;
}
最后
以上就是怕孤单手套为你收集整理的2007年浙大研究生复试机试真题-游船出租的全部内容,希望文章能够帮你解决2007年浙大研究生复试机试真题-游船出租所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复