描述
现在给出一天内的两个时刻,时间间隔是时刻1与时刻2差的绝对值,时刻用时,分和秒表示。
输入n条时刻1和时刻2,统计并独立输出每个时间间隔,单位为秒。
输入格式
第一行输入整数n,之后输入n行,每行输入6个整数: h1, ml,s1, h2, m2和s2,其中时刻1的时为h1,分为ml,秒为s1,时刻2的时为h2,分为m2,秒为s2。
输入数据保证: 1<=n<=1000, 0<=h1, h2<24, 0<=ml, m2, s1, s2<60,
输出格式
每行输出时间间隔,单位为秒。
#include <stdio.h>
typedef struct {
int hour;
int min;
int sec;
}Time;
/**
* 计算时间差
* @param time1
* @param time2
* @return 时间结构体
*/
Time TimeDifference(Time time1,Time time2)
{
Time dtime;
int int_1=0,int_2=0,result=0;
//将时间都转化为秒进行计算
int_1=(time1.hour*60+time1.min)*60+time1.sec;
int_2=(time2.hour*60+time2.min)*60+time2.sec;
result=(int_1>=int_2)?(int_1-int_2):(int_2-int_1);
dtime.hour=result/3600;
dtime.min=(result-dtime.hour*3600)/60;
dtime.sec=result-dtime.hour*3600-dtime.min*60;
return dtime;
}
int main() {
Time time[3];
for (int i = 0; i < 2; ++i) {
printf("请输入时刻%d(hour:min:sec):",i+1);
scanf("%d:%d:%d",&time[i].hour,&time[i].min,&time[i].sec);
fflush(stdin);
}
time[2]= TimeDifference(time[0],time[1]);
printf("时刻差为:%d时%d分%d秒",time[2].hour,time[2].min,time[2].sec);
return 0;
}
都转换成秒数相减就可以了。代码如下:
#include <stdio.h>
int main()
{
int i,n;
int h1,m1,s1,h2,m2,s2;
int t1,t2;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d %d %d %d %d %d",&h1,&m1,&s1,&h2,&m2,&s2);
t1 = h1 * 3600 + m1 * 60 + s1;
t2 = h2 * 3600 + m2 * 60 + s2;
if(t1 < t2)
printf("%d\n",t2-t1);
else
printf("%d\n",t1-t2);
}
return 0;
}
综合1楼的,他还漏了一些,改一下就好啦。题主说“输入数据保证: 1<=n<=1000, 0<=h1, h2<24, 0<=ml, m2, s1, s2<60”,那就改一下scanf部分,只读他们这些范围的就好啦例如,n的,if(1<=n<=1000)给加到那句scanf前
C语言计算两个时刻的时间差
可以借鉴下
#include <stdio.h>
typedef struct {
int hour;
int min;
int sec;
}Time;
/**
* 计算时间差
* @param time1
* @param time2
* @return 时间结构体
*/
Time TimeDifference(Time time1,Time time2)
{
Time dtime;
int int_1=0,int_2=0,result=0;
//将时间都转化为秒进行计算
int_1=(time1.hour*60+time1.min)*60+time1.sec;
int_2=(time2.hour*60+time2.min)*60+time2.sec;
result=(int_1>=int_2)?(int_1-int_2):(int_2-int_1);
dtime.hour=result/3600;
dtime.min=(result-dtime.hour*3600)/60;
dtime.sec=result-dtime.hour*3600-dtime.min*60;
return dtime;
}
int main() {
Time time[3];
for (int i = 0; i < 2; ++i) {
printf("请输入时刻%d(hour:min:sec):",i+1);
scanf("%d:%d:%d",&time[i].hour,&time[i].min,&time[i].sec);
fflush(stdin);
}
time[2]= TimeDifference(time[0],time[1]);
printf("时刻差为:%d时%d分%d秒",time[2].hour,time[2].min,time[2].sec);
return 0;
}
c语言的 time(&t) 函数可以直接返回时间参数的秒数形式,两个时刻直接减就是他们之间的时间间隔