hdu_1036(取整和格式控制)

题意很简单,求平均时间

复习一下如何取整

(int) fl 是直接向下取整  ==  floor(fl)

向上取整 (int)(fl+1)  == ceil(fl)

四舍五入 (int)(fl+0.5)

 

技巧:输入时候决定什么时候读入int,什么时候读入char有时候可以省很多事情

代码:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 int hour, minutes, second;
 6 bool fl;int t;
 7 char tm[7];
 8 void solve(){
 9     if(tm[0]=='-'){fl = 0; return;}
10     hour += tm[0]-'0';
11     minutes = minutes + (tm[2]-'0')*10+(tm[3]-'0');
12     second = second + (tm[5]-'0')*10+(tm[6]-'0');
13 }
14 void pout(){
15     if(t/100==0) printf(" ");
16     if(t/10==0) printf(" ");
17     printf("%d",t);
18     printf(": %d:",minutes);
19     if(second/10==0) printf("0");
20     printf("%d min/km\n",second);
21 }
22 int main()
23 {
24     int n;  double d;
25     char tt[3];
26     while(~scanf("%d%lf",&n,&d))
27     {
28         while(~scanf("%d",&t)){
29             hour = 0, minutes = 0; second = 0;
30             fl = 1;
31             for(int i = 0; i < n; i++){
32                 scanf("%s",&tm);
33                 solve();
34             }
35             if(fl==0){
36                 if(t/100==0) printf(" ");
37                 if(t/10==0) printf(" ");
38                 printf("%d",t);
39                 printf(": -\n");
40                 continue;
41             }
42             double allminutes = hour*60+minutes+(double)second/60;
43             //printf("min = %lf\n",allminutes);
44             allminutes /= d;
45             minutes = (int)allminutes;
46             second =(int)((allminutes-(int)allminutes)*60+0.5);
47             if(second==60){
48                 second = 0;
49                 minutes ++;
50             }
51             pout();
52         }
53     }
54     return 0;
55 }

 

转载于:https://www.cnblogs.com/shanyr/p/7348931.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值