华为笔试题 计算下一秒

按格式给定当前时间,输出该时间的下一秒时间,注意年份考虑平年和闰年

比如:

输入:2015/12/31 23:59:59

输入为:2016/01/01 00:00:00

输入:2016/02/29 23:59:59

输出:2016/03/01 00:00:00

#include<iostream>
#include<string>
#include<string.h>
#include<vector>
#include<algorithm>
using namespace std;
void solve(string str);
int my_fun(string str);
void my_fun2(string &str,int n);
int main()
{
	string str;
	while(getline(cin,str))//输入格式:2016/02/29 23:59:59
	{
		solve(str);
	}
	return 0;
}
void solve(string str)
{
	if(str.length()!=19)//格式不符合,直接返回
	{
		return;
	}
	int x;//2月的天数
	//按输入格式,手动将年、月、天、时、分、秒字符串取出
	string year=str.substr(0,4);//取年
	if((my_fun(year)%4==0&&my_fun(year)%100!=0)||my_fun(year)%400==0)//计算闰年的二月
	{
		x=29;//平年二月28,闰年二月29
	}
	else
	{
		x=28;
	}
	int data[12]={31,x,31,30,31,30,31,31,30,31,30,31};//一年中每个月的天数

	string mon=str.substr(5,2);//取月
	string day=str.substr(8,2);//取天
	string hour=str.substr(11,2);//取时
	string min=str.substr(14,2);//取分
	string sec=str.substr(17,2);//取秒

	int si,mi,hi,di,moni;//秒、分、时、天、月的进位,初始化为0,年没有考虑进位
	si=mi=hi=di=moni=yeari=0;
	//s
	if((my_fun(sec)+1)>59)//秒+1大于59,秒进位置1
	{
		sec="00";
		si=1;
	}
	else
	{
		my_fun2(sec,1);//计算秒+1的值,字符串的形式
	}
	//min
	if((my_fun(min)+si)>59)//分+si大于59,分进位置1
	{
		min="00";
		mi=1;
	}
	else
	{
		my_fun2(min,si);
	}
	//hour
	if((my_fun(hour)+mi)>23)
	{
		hour="00";
		hi=1;
	}
	else
	{
		my_fun2(hour,mi);
	}
	//day
	if((my_fun(day)+hi)>data[my_fun(mon)-1])
	{
		day="01";
		di=1;
	}
	else
	{
		my_fun2(day,hi);
	}
	//mon
	if((my_fun(mon)+di)>12)
	{
		mon="01";
		moni=1;
	}
	else
	{
		my_fun2(mon,di);
	}
	//year
	my_fun2(year,moni);

	cout<<year<<"/"<<mon<<"/"<<day<<" "<<hour<<":"<<min<<":"<<sec<<endl;

}
int my_fun(string str)//将string转int
{
	int data=0;
	for(int i=0;i<str.length();i++)
	{
		data=data*10+str[i]-'0';
	}
	return data;
}
void my_fun2(string &str,int n)//计算string+n的值,字符串的形式
{
	int data=my_fun(str)+n;
	if(str.length()<=2)
	{
		str[0]=data/10+'0';
		str[1]=data%10+'0';
		return;
	}
	else
	{
		for(int i=3;i>0;i--)
		{
			str[i]=data%10+'0';
			data=data/10;
		}
		return;
	}
}



猜你喜欢

转载自blog.csdn.net/qq_21905401/article/details/52497529
今日推荐