XDOJ 期末练习题选做 考勤系统

本文介绍了一个C程序,用于输入员工信息(序号、姓名和工时),计算每个员工的工作时间,然后按工时和序号进行排序并输出结果。
摘要由CSDN通过智能技术生成
#include<stdio.h>
struct peo
{int a;
char jin[5];
 char chu[5];	
int gong;
}; 


int main()
{int n=0,i=0,h=0,v=0;
struct peo per[101];
struct peo ans[101];
scanf("%d",&n);
while(i<n){
scanf("%d %s %s",&per[i].a,&per[i].jin,&per[i].chu);
i++;
}
i=0;
while(i<n)
{per[i].gong=(per[i].chu[0]-'0')*600+(per[i].chu[1]-'0')*60+(per[i].chu[3]-'0')*10+(per[i].chu[4]-'0')
-((per[i].jin[0]-'0')*600+(per[i].jin[1]-'0')*60+(per[i].jin[3]-'0')*10+(per[i].jin[4]-'0'));

i++;
}//以00:00为统一基准计算时间 
for(int a=0;a<n;a++){
for(int b=(a+1);b<n;b++){
if(per[a].a==per[b].a){
per[a].gong+=per[b].gong;
per[b].a=0;}

}
if(per[a].a!=0){ans[h].a=per[a].a;ans[h].gong=per[a].gong;
h++;}
}//对相同序号的员工进行工作时间求和 
	
	for(int a=1;a<h;a++){
for(int b=0;b<h-a;b++){i=0;
if(ans[b].gong<ans[b+1].gong){i=ans[b].gong,ans[b].gong=ans[b+1].gong,ans[b+1].gong=i;
i=ans[b].a,ans[b].a=ans[b+1].a,ans[b+1].a=i;
}
}
}//第一步进行工作时间排序 
for(int a=1;a<h;a++){
for(int b=0;b<h-a;b++){if(ans[b].gong==ans[b+1].gong&&ans[b].a>ans[b+1].a){i=ans[b].gong,ans[b].gong=ans[b+1].gong,ans[b+1].gong=i;
i=ans[b].a,ans[b].a=ans[b+1].a,ans[b+1].a=i;
}
}
}//第二步进行序号排序 
while(v<h){
printf("%d %d\n",ans[v].a,ans[v].gong);
v++;
}
	return 0;
} 

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值