编写函数BeforTime(time,duration)计算时间time之前“xx小时xx分xx秒”的时间。时间以24小时制格式表示。
BeforTime函数的返回值为计算结果与初始时间之间的日期差。如果是同一天返回0,是前n天则返回n。
用结构体类型存储时间。
提示:先计算秒,再计算分,最后计算小时。例如计算“09:19:52”前“1:20:30”的方法是:
秒:52−30=22,借0
分:19−20−0+60=59,借1
时:9−1−1=7,借0
测试输入1:
09:19:52
1:15:30
输出:
同一天08:04:22
测试输入2:
00:19:52
1:20:30
输出:
前1天22:59:22
测试输入3:
00:19:52
25:30:59
输出:
前2天22:48:53
问题相关代码,请勿粘贴截图
#include <stdio.h>
struct CLOCK
{
int hour;
int minute;
int second;
};
int BeforeTime(struct CLOCK *time,struct CLOCK duration);
int main()
{
struct CLOCK timeNow,timePast;
int n;
scanf("%d:%d:%d",&timeNow.hour,&timeNow.minute,&timeNow.second);
scanf("%d:%d:%d",&timePast.hour,&timePast.minute,&timePast.second);
n = BeforeTime(&timeNow,timePast);
if(n == 0)
printf("同一天");
else
printf("前%d天",n);
printf("%02d:%02d:%02d",timeNow.hour,timeNow.minute,timeNow.second);
return 0;
}
//此函数计算time时刻前duration的时间;
//函数的返回值:计算结果与time相比是同一天,应返回0,是前n天,则返回n
int BeforeTime(struct CLOCK *time,struct CLOCK duration)
{
int sum=0,flag=0;
if(time->second<duration.second)
{
--time->minute;
time->second+=60;
}
time->second=time->second-duration.second;
if(time->minute<duration.minute){
--time->hour;
time->minute += 60;
if(time->hour<duration.hour)
{time->hour+=24;flag=1;}
}
time->minute= time->minute -duration.minute;
time->hour = time->hour - duration.hour;
sum=((time->second+time->minute60+time->hour3600)-(duration.second+duration.minute60+duration.hour3600))/3600;
if(sum<=24)
return 0+flag;
else return sum/24+flag;
}
运行结果及报错内容
第三个测试过不了