00004(时间转换,取余赋值)

//给定秒数换算成多少小时多少分钟多少秒

#include <stdio.h>
/*int main()
{
    float h,m,s;
    scanf("%f",&s);
    h=s/3600;
    s %=3600;
    m=s/60;
    s %=60;
    printf("%fh %fm %fs ",h,m,s);
    return 0;
}*/                    错误,floa,doublet定义的变量不能取余,因为它们定义的不是整数

/*int main()
{
    float s;
    scanf("%f",&s);                                               
    float h=s/3600;
    s=(int)s%3600;
    float m=s/60;
    s=(int)s%60;
    printf("%d %d %.2f ",(int)h,(int)m,s);
    return 0;
}*/                   错误,并没有达到精确到小数点后2两位的目的,因为强制转换符使s=(int)s%60的s先取整数再取余,所以小数点后数字省略。因为s本身是用float定义的,所以即使使用了强制转换符,用%.2f仍旧能够输出正常数字。

int main() {
    int seconds;
    scanf("%d", &seconds);
    int hours = seconds / 3600;
    seconds %= 3600;
    int minutes = seconds / 60;
    seconds %= 60;
    printf("%d %d %d\n", hours, minutes, seconds);
    return 0;
}                  正确,但是秒不精确

程序的进程是有序的,所以执行 int minutes = seconds / 60;时,这里的seconds已经是取余过后的一个新的数值(%=取余并赋值,a%=3600,a除以3600的余数并赋予a)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值