今日算后天日期

今日算后天日期

题目描述

已知今天的日期,请输出后天的日期。
即,对于给定的日期,请计算出该日期加上2天的结果日期。
例如:今天的日期为2023-01-21,则后天的日期为2023-01-23。

功能需求

输入格式:

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。
每组测试输入1个日期,日期形式为“yyyy-mm-dd”(年份4位,月份2位,日份2位,位数不足时前补0)。
保证输入的日期合法,而且输入的日期和计算结果都在[1200-01-01,9999-12-31]范围内。

输出格式:

对于每组测试,在一行上以“yyyy-mm-dd”的形式输出结果日期。

输入样例:

2
2023-01-21
2023-02-27

输出样例:

2023-01-23
2023-03-01

提示说明

说明其一

分析:看着简单,其实暗藏玄ji。
1)注意闰年平年,闰年2月29天,平年2月28天。
闰年是可以被4整除而不能被100整除,或被400整除的
2)注意月份,1,3,5,7,8,10,12月31天;4,6,9,11月30天;
3)尤其关注12月份和每月末,前者必要时改变年份,后者必要时改变月份;

说明其二

c语言中%03d的含义
这是用在printf或scanf函数中的格式符,用来以特定的格式输入和输出字符。
% 是格式符的开始。
d 表示有符号整数。
3 表示最小输出3位数字。
0 表示如果数字不足3位,在左边用0补成3位。
如printf(“%03d”, 1); 会打印出 001‘

代码内容

#include <stdio.h>
int main()
{
    int y,m,d,y1,m1,d1;
    int T,i=1;
    printf("请输入测试数据的组数:");
    scanf("%d",&T);
    while(T>=i)
    {
           printf("请输入第%d组测试组数\n",i);
           scanf("%d-%02d-%02d",&y,&m,&d);
           y1=y;
           m1=m;
           d1=d;
           if((y%4==0&&y%100!=0)||y%400==0)
           {
                 if(m==1||m==3||m==5||m==7||m==8||m==10)
                 {
                     if(d==31) d1=2,m1=m+1;
                     if(d==30) d1=1,m1=m+1;
                     if(d>=1&&d<=29) d1=d+2;
                 }
                 if(m==2)
                 {
                     if(d==29) d1=2,m1=m+1;
                     if(d==28) d1=1,m1=m+1;
                     if(d>=1&&d<=27) d1=d+2;
                 }
                 if(m==4||m==6||m==9||m==11)
                 {
                     if(d==30) d1=2,m1=m+1;
                     if(d==29) d1=1,m1=m+1;
                     if(d>=1&&d<=28) d1=d+2;
                 }
                if(m==12)
                {
                     if(d==31) d1=2,y1=y+1,m1=1;
                     if(d==30) d1=1,y1=y+1,m1=1;
                     if(d>=1&&d<=29) d1=d+2;
                }
           }
           else 
           {
                if(m==1||m==3||m==5||m==7||m==8||m==10)
                {
                     if(d==31) d1=2,m1=m+1;
                     if(d==30) d1=1,m1=m+1;
                     if(d>=1&&d<=29) d1=d+2;
                }
                if(m==2)
                {
                     if(d==28) d1=2,m1=m+1;
                     if(d==27) d1=1,m1=m+1;
                     if(d>=1&&d<=26) d1=d+2;
                }
                if(m==4||m==6||m==9||m==11)
                {
                     if(d==30) d1=2,m1=m+1;
                     if(d==29) d1=1,m1=m+1;
                     if(d>=1&&d<=28) d1=d+2;
                }
                if(m==12)
                {
                     if(d==31) d1=2,y1=y+1,m1=1;
                     if(d==30) d1=1,y1=y+1,m1=1;
                     if(d>=1&&d<=29) d1=d+2;
                }
           }
           printf("%d-%02d-%02d\n",y1,m1,d1);
           i++;
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pretty Boy Fox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值