P5707 【深基2.例12】上学迟到

正解:

#include<bits/stdc++.h>
using namespace std;
int s,v,m;
int n,a,t,b;
int main()
{
    scanf("%d %d",&s,&v);
    n = 8*60+24*60;
    t = ceil(1.0*s/v)+10;
    n = n-t;
    if(n>=24*60)//判断是否为前一天 
    n = n-24*60;
    a = n/60;
    b = n%60;
    printf("%02d:%02d",a,b);
    return 0;
}

在不了解向上取整和02d形式输出情况下的代码(不完全正确):

#include<bits/stdc++.h>
using namespace std;
int main() {
    int s,v;
    int h,f;
    int count=0;
    scanf("%d %d",&s,&v);
    if(s%v ==0 && s/v+10<=480)
    {
        count=1;
        h = (480-s/v) / 60;
        f = (480-s/v) % 60-10;
    }    
    if(s%v!=0 && s/v+11<=480)
    {
        count=1;
        h = (480-s/v-1) / 60;
        f = (480-s/v-1) % 60-10;
    }
    //超过480分钟               
    int er;
    if(s%v ==0 && s/v+10>480)
    {
        count =2;
        er = s/v + 10 - 480 ;
        h = (1440-er) / 60;
        f = (1440-er)% 60;
    }
    if(s%v!=0 && s/v+11>480)
    {
        count = 2;
        er = s/v + 10 - 480  + 1;
        h =(1440-er) / 60;
        f = (1440-er) % 60;
    }
    if(count == 1)
    {
        if(f == 0)
        printf("0%d:00",h);
        else if(f >0 && f < 10 )
        printf("0%d:0%d",h,f);
        else
        printf("0%d:%d",h,f); 
    }
    
    if(count == 2)
    {
        if(h<10)
        {
            if(f<10&&f>=0)
            {
                printf("0%d:0%d",h,f);
            }
            else if(f>10&&f<60)
            printf("0%d:%d",h,f);
        }
        else if(h>10&&h<=24)
        {
            if(f<10&&f>=0)
            {
                printf("%d:0%d",h,f);
            }
            else if(f>=10&&f<60)
            printf("%d:%d",h,f);
        }
    }
    return 0;
}

心得:

        ceil()的用法:

C 库函数 double ceil(double x) 返回大于或等于 x 的最小的整数值double ceil(double x)。由此可知,需要小数,可定义为double或者用int*1.0

        floor()向下取整;

        printf   02d输出:

0在指定填充 padding 的数字左边放置零(0),而不是空格(参见 width 子说明符)。

如:07:48

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值