m0_74879864 2022-11-05 20:19 采纳率: 100%
浏览 316
已结题

给定一个日期计算下两天日期

给定一个日期,格式为yyyy-mm-dd(年份-月份-日期),计算并输出后天的日期,格式为yyyy.mm.dd(4位年份.2位月份.2位日期)。例如:输入2001-12-31,输出为:2002.01.02。

输入格式:
输入以"-"分隔的年月日。

输出格式:
输出计算后的后天的日期,以"."分隔。行末无多余字符。

输入样例 1:
2001-12-31
输出样例 1:
2002.01.02
输入样例 2:
2008-2-28
输出样例 2:
2008.03.01

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-11-05 22:45
    关注

    供参考:

    #include <stdio.h>
    int IsLeapYear(int y)
    {
        return ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0));
    }
    int DaysOfMonth(int y, int m)
    {
        int a[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
        if (IsLeapYear(y) && m == 2) return a[m - 1] + 1;
        return a[m - 1];
    }
    void Show(int year,int month,int day)
    {
        printf("%4d.%02d.%02d\n", year, month, day);//年.月.日 格式
    }
    void IncTwoDay(int *year,int *month,int *day)
    {
        if ((*day) == DaysOfMonth(*year, *month)  ||
            (*day) == DaysOfMonth(*year, *month) - 1)
        {
            if ((*day) == DaysOfMonth(*year, *month))    (*day) = 2;
            if ((*day) == DaysOfMonth(*year, *month) - 1)(*day) = 1;
            if ((*month) == 12) {
                (*month) = 1;
                (*year)++;
            }
            else
                (*month)++;
        }
        else
            (*day)+=2;
    }
    int main()
    {
        int y, m, d;
        //printf("input\n");
        scanf("%d-%d-%d", &y, &m, &d);
        IncTwoDay(&y, &m, &d);
        //printf("output\n");
        Show(y, m, d);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 11月14日
  • 已采纳回答 11月6日
  • 创建了问题 11月5日

悬赏问题

  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本