生日日数
内存限制:128Mb
时间限制:1000s
题目描述
小理的生日是 YY年MM月DD日
,他想知道自己出生后第一万天纪念日的日期(出生日算第 00 天)。
输入格式
输入有多行,格式为 YY MM DD
其中 1949≤YY≤2006 ,日期绝对合法。
输出格式
输出有多行。
即小理生日第一万天以后的日期,格式为 “Y-M-D
”。
下面是代码和注释:
#include<iostream>
#include<ctime>
using namespace std;
int main()
{
int yy,mm,dd;
while(cin>>yy>>mm>>dd)
{
//初始化
struct tm birth={0}; //struct tm是c++中一个标准的结构体,用来表示时间
//设置值
birth.tm_year=yy-1900;//标准库从1900开始,使用偏移量计算
birth.tm_mon=mm-1;//标准库中月份从0开始,也即0-11,最后输出记得+1 还原
birth.tm_mday=dd;
//time_t数据类型和mktime函数
time_t birth_time=mktime(&birth);//time_t是一种数据类型,mktime函数将tm结构体转换成了time_t时间戳,并且能够自动处理超出范围的日期,自动调整月份年份
time_t future_time=birth_time+10000*86400;//如果字母看着太复杂,其实就相当于int a=b+1*8;86400是一天的秒数,10000*86400就是一万天的秒数
struct tm future_date=*localtime(&future_time);
//定义了一个结构体变量future_date,localtime函数是计算时间的,返回的是存放该时间的地址,参数也是修改前时间的地址,解引后将修改时间赋值给了future_date结构体变量
//同时这一步也可以用指针获取localtime返回值
//struct tm *future_date=localtime(&future_time);
//输出时注意用->
//cout<<future_date->tm_year+1900<<"-"<<future_date->tm_mon+1<<"-"<<future_date->tm_mday<<endl;
cout<<future_date.tm_year+1900<<"-"<<future_date.tm_mon+1<<"-"<<future_date.tm_mday<<endl;
}
return 0;
}
欢迎大家批评指正和补充!