解题思路:
第一行 :去的起降时间
来回的飞行时间相同 时差相同 设时差为n
17:48:19 甲地起飞时间
17:48:19+n 为乙地的起飞时间
21:57:24 甲到乙地的降落时间
21:57:24-(17:48:19+n)=飞行时间
第二行:回来的起降时间
11:05:18 乙地的起飞时间
11:05:18-n 为甲地起飞时间
15:14:23 乙到甲地的降落时间
15:14:23-(11:05:18-n)=飞行时间
列等式 飞行时间相同,求时差 在求飞行时间
21:57:24-(17:48:19+n)=15:14:23-(11:05:18-n)
求出n 在把n带回去 求飞行时间
要把时间转化为秒 求总秒数
H m s: m*60+s+h*3600=总秒数
答案在从总秒数 求出的时差转回h,m,s
注意事项: 有借鉴思想
参考代码:
#include<stdio.h>
#include<string.h>
int zs(int h,int m ,int s){
return h*3600+m*60+s;
}
int pd(){
char a[100];
gets(a);
int l;
l=strlen(a);
if(a[l-1]!=')')
strcat(a,"(+0)");
int h1,m1,s1,h2,m2,s2,d;
sscanf(a,"%d:%d:%d %d:%d:%d (+%d)", &h1, &m1, &s1, &h2, &m2, &s2, &d);
return zs(h2,m2,s2)-zs(h1,m1,s1)+d*24*3600;
}
int main(){
int n;
scanf("%d",&n);
char a[200];
gets(a);
while(n--){
int t=(pd()+pd())/2;
int h=(t/3600)%24;
int m=(t/60)%60;
int s=t%60;
printf("%02d:%02d:%02d\n", h, m, s);
}
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复