#include<ctime>的部分运用

                                                                       生日日数

内存限制: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;
}

欢迎大家批评指正和补充!

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值