[蓝桥杯 2018 省 A] 航班时间

本文介绍了一个编程问题,如何使用C++中的scanf和getchar函数读取航班的去程和回程时间,并通过计算飞行时间和时差求得平均值,展示了基本的输入输出处理和时间单位转换技巧。
摘要由CSDN通过智能技术生成

题目链接:航班时间

显然:去程时间=飞行时间+时差,回程时间=飞行时间-时差

列方程组可知:飞行时间=(去程时间+回程时间)/2

本道题目还有一个难点在于如何读入和输出:可以采用scanf()解决。

首先用scanf输入前面两个时间:
 

scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);

然后用getchar()判断接下来还有没有数据,如果是“  ”说明还有:

if(getchar()==' ')scanf("(+%d)",&k);

同时输出也不用麻烦自己写函数:

printf("%02d:%02d:%02d\n",ans/3600,ans%3600/60,ans%60);

输入输出解决了那我们可以计算了,首先将输入的数据全部转化成秒来计算,最后只需改变输出即可

代码附上:

#include <bits/stdc++.h>
using namespace std;
int n;

int get(){
	int h1,m1,s1,h2,m2,s2,k=0;
	scanf("%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2);
	if(getchar()==' ')scanf("(+%d)",&k);
	return (k*24*3600+h2*3600+m2*60+s2)-(h1*3600+m1*60+s1);
}

int main(){
	scanf("%d",&n);
	while(n--){
		int ans=(get()+get())/2;
		printf("%02d:%02d:%02d\n",ans/3600,ans%3600/60,ans%60);
	}

	return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值