首先这题我是太垃了,第一个想法就是套if else,没想到好的方法,这是我的笨蛋方法
*#include<stdio.h>
#include<math.h>
int main()
{
int a, b, c,d,e,f,g;
scanf_s("%d:%d:%d\n", &a, &b, &c);
scanf_s("%d:%d:%d", &d, &e, &f);
if (e - b >= 0 && f - c >= 0)
printf("%02d:%02d:%02d", (d - a), (e - b), (f - c));
else
if (e - b < 0 && f - c >= 0)
{
printf("%02d:%02d:%02d", (d - a - 1), (60 - (b - e)), (f - c));
}
else
if (e - b != 0 && f - c < 0)
printf(" % 02d: % 02d : % 02d", (d - a), (e - b - 1), (60 - (c - f)));
else
if (e - b == 0 && f - c < 0)
printf("%02d:59:%02d", (d - a - 1), (60 - (c - f)));
return 0;
}
其实不仅繁琐易错而且最大的问题是,我默认了第一个时间段<第二个时间段的时长,但要是输入13:00:00 12:00:00 就不输出了,所以还要反过来再把所有的变量顺序变一下(简直麻烦死)
#include<stdio.h>
int main(){
int a,b,c,t;
scanf("%d:%d:%d\n",&a,&b,&c);
int A,B,C;
scanf("%d:%d:%d",&A,&B,&C);
int z=a*3600+b*60+c;
int x=A*3600+B*60+C;
if(z<x)
t=x-z;
else
t=z-x;
printf("%d\n",t);
int q=t/3600;
int w=t/60%60;
int e=t%60;
printf("%02d:%02d:%02d",q,w,e);
return 0;
}
————————————————
原文链接:https://blog.csdn.net/huangluping12345/article/details/89330934
能力有限,这是别人的一个好的方法,把两个时间段的时长利用变量作为秒数储存起来,先比较大小再进行这个储存变量的改变!
这也是一个好的思路!
(%02d指的两位字宽,不够两位补0,一开始不知道02,这样的怎么打的....)
%.2d指的是补空格