在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在不得不先读入一行,对此行的长度做一个判断之后,再拿这一行中的某些值 这时候就先得cin.getline(line,size)得到一行 但是在取这一行之前,如果使用了cin>>, 就必须(cin>>).get(); 或者用一个getchar();
【问题背景】 小h对超音速飞行感到十分恐惧。仔细观察后发现飞机的起降时间都是当地时间。由于北京和美国东部有12小时时差,故飞机总共需要14小时的飞行时间。 不久后小h的女朋友去中东交换。小h并不知道中东与北京的时差。但是小h得到了女朋友来回航班的起降时间。小h想知道女朋友的航班飞行时间是多少。 【问题描述】 【输入格式】 输入第一行为一个正整数T,表示输入数据组数。 h1:m1:s1 h2:m2:s2 第一种格式表示在当地时间 当日 h2时m2分s2秒降落 对于此题目中的所有以 h:m:s 形式给出的时间, 保证 ( 0<=h<=23, 0<=m,s<=59 ). 【输出格式】 对于每一组数据输出一行一个时间hh:mm:ss,表示飞行时间为hh小时mm分ss秒。 【样例输入】 【样例输出】 【限制与约定】
注意: 提交程序时,注意选择所期望的语言类型和编译器类型。
#include <iostream> #include <stdio.h> #include <cstring> using namespace std ; int T ; void result(int res[]){ for(int i = 0 ;i<T ; ++i){ int t = res[i]; int q =0 ; int h , m ,s ; printf("%02d:%02d:%02d\n",t/(3600),(t/60)%60,t%60); } return ; } //输入 int gettime(){ char line [50] = {}; cin.getline(line,50); int len = strlen (line); //getchar(); int h1,m1,s1,h2,m2,s2,d =0 ; if(strlen(line)<18){ //没有+1 sscanf(line,"%d:%d:%d %d:%d:%d",&h1,&m1,&s1,&h2,&m2,&s2); } else{ sscanf(line,"%d:%d:%d %d:%d:%d (+%d)",&h1,&m1,&s1,&h2,&m2,&s2,&d); } int time = d*24*3600+ h2*3600+ m2*60 + s2 -(h1*3600+ m1*60 + s1) ; return time ; } int main(){ //(cin>>T).get();//******一定得加上.get() 不然会跳一行 cin>>T; getchar(); int res[T]; for(int i=0 ; i<T ; ++i){ int time1 = gettime(); int time2 = gettime(); res[i] = (time2+time1)/2; } //输出 result(res); return 0 ; } /* 输入 3 17:48:19 21:57:24 11:05:18 15:14:23 17:21:07 00:31:46 (+1) 23:02:41 16:13:20 (+1) 10:19:19 20:41:24 22:19:04 16:41:09 (+1) 输出 04:09:05 12:10:39 14:22:05 */
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论