【实验2 选择结构】7-3 sdut-C语言实验-时间间隔

7-3 sdut-C语言实验-时间间隔

分数 20

全屏浏览题目

切换布局

作者 马新娟

单位 山东理工大学

从键盘输入两个时间点(24小时制),输出两个时间点之间的时间间隔,时间间隔用“小时:分钟:秒”表示。
如:3点5分25秒应表示为--03:05:25.假设两个时间在同一天内,时间先后顺序与输入无关。

输入格式:

输入包括两行。
第一行为时间点1。
第二行为时间点2。

输出格式:

以“小时:分钟:秒”的格式输出时间间隔。
格式参看输入输出。

输入样例:

12:01:12
13:09:43

输出样例:

在这里给出相应的输出。例如:

01:08:31

 正确示例

简单的说一下这个题的解题思路,因为时间间隔直接算不是很简便,所以我们运用化归的思想,将其转化为统一的单位,(你可以全都化成秒,也可以全都化成时,分)这里我们将它化为秒,然后计算,用一个if选择结构来进行分类讨论。

ps:可以简单一点,直接调用绝对值函数可以少些几步,但是起不到练习if语句的效果。

 

#include<stdio.h>
int main()
{
    int a,b,c,x,y,z,t1,t2;
    scanf("%d:%d:%d",&a,&b,&c);
    scanf("%d:%d:%d",&x,&y,&z);
    t1=a*3600+b*60+c;
    t2=x*3600+y*60+z;
    if(t1-t2>0)
        printf("%02d:%02d:%02d",(t1-t2)/3600,(t1-t2)/60%60,(t1-t2)%60);
    else
        printf("%02d:%02d:%02d",(t2-t1)/3600,(t2-t1)/60%60,(t2-t1)%60);
    return 0;
}
#include <stdio.h>
int main (void)
{
    int a,b,c,x,y,z,t1,t2;
    scanf("%d:%d:%d",&a,&b,&c);
    scanf("%d:%d:%d",&x,&y,&z);
    t1=a*3600+b*60+c;
    t2=x*3600+y*60+z;
    if(t1-t2>0)
    {
        printf("%02d:%02d:%02d",(t1-t2)/3600,(t1-t2)%3600/60,(t1-t2)%60);
    }else
        printf("%02d:%02d:%02d",(t2-t1)/3600,(t2-t1)%3600/60,(t2-t1)%60);
    return 0;
}

 数学思想主要是和逆置正整数差不多

 

错误示例 (这是一个简单的数学思想错误,我放出来,大家引以为戒哦!)

#include<stdio.h>
int main()
{
    int a,b,c,x,y,z,t1,t2;
    scanf("%d:%d:%d",&a,&b,&c);
    scanf("%d:%d:%d",&x,&y,&z);
    t1=a*3600+b*60+c;
    t2=x*3600+y*60+z;
    if(t1-t2>0)
        printf("%02d:%02d:%02d",(t1-t2)/3600,(t1-t2)%60/60,(t1-t2)%60);
    else
        printf("%02d:%02d:%02d",(t2-t1)/3600,(t2-t1)%60/60,(t2-t1)%60);
    return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值