爱甜筒的猫 2016-02-25 01:09 采纳率: 100%
浏览 4587

按如下函数原型用函数编程解决如下的日期转换问题(要求考虑闰年的问题)

图片

  • 写回答

2条回答 默认 最新

  • threenewbee 2016-02-25 13:29
    关注
     #include <stdio.h>
    
    int mt[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    
    void set2(int y)
    {
        if (y % 4 != 0)
        {
            mt[2] = 28;
        }
        else
        {
            if (y % 100 == 0 && y % 400 != 0)
                mt[2] = 28;
            else
                mt[2] = 29;
        }
    }
    
    void showmenu()
    {
        printf("1. y/n/d -> yd\n");
        printf("2. yd -> y/n/d\n");
        printf("3. exit\n");    
    }
    
    int ymd2yd(int y, int m, int d)
    {
        set2(y);
        int r = 0;
        for (int i = 0; i < m; i++)
            r += mt[i];
        r += d;
        return r;
    }
    
    void yd2ymd(int yd, int * r)
    {
        set2(r[0]);
        int m = 0;
        while (yd > mt[m])
        {
            yd -= mt[m++];
        }
        r[1] = m;
        r[2] = yd;
    }
    
    int main()
    {   
        char c;
        showmenu();
        while (scanf("%c", &c), 1)
        {
            switch (c)
            {
            case '1':
                int y, int m, int d;
                scanf("%d", &y);
                scanf("%d", &m);
                scanf("%d", &d);
                printf("%d\n", ymd2yd(y, m, d));
                showmenu();
                break;
            case '2':
                int yd;
                int r[3];
                scanf("%d", &r[0]);
                scanf("%d", &yd);
                yd2ymd(yd, r);
                printf("%d %d %d\n", r[0], r[1], r[2]);
                showmenu();
                break;
            case '\n':
                break;
            default:
                return 0;
            }
        }
        return 0;
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题