栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言-指针-日期转换问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言-指针-日期转换问题

1. 任意给定某年某月某日,打印出它是这一年的第几天

2. 已知某一年的第几天,计算它是这一年的几月几日。 

#include
#include

int DayofYear(int year, int month, int day);
void Monthday(int year, int yearDay, int *pMonth, int *pDay);
void Menu(void);

static int dayTab[2][13] = {{0,31,28,31,30,31,30,31,30,31,30,31,30},{0,31,29,31,30,31,30,31,30,31,30,31,30}};

int main(void)
{
    int year, month, day, yearDay, choice;
    Menu();
    scanf("%d", &choice);
    switch(choice)
    {
        case 1:
            printf("请输入年,月,日:");
            scanf("%d,%d,%d", &year, &month, &day);
            yearDay = DayofYear(year, month, day);
            printf("这是%d年的第%d天!", year, yearDay);
            break;
        case 2:
            printf("请输入年份及该年的第几天:");
            scanf("%d,%d", &year, &yearDay);
            Monthday(year, yearDay, &month, &day);
            printf("这是%d年%d月%d日!", year, month, day);
            break;
        case 3:
            exit(0);
        default:
            printf("输入错误!");
    }
    return 0;
}

int DayofYear(int year, int month, int day)
{
    int i, leap;
    leap = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);//判断leap = 1 || leap = 0
    for(i = 1; i < month; i++)
    {
        day = day + dayTab[leap][i];
    }
    return day;
}

void Monthday(int year, int yearDay, int *pMonth, int *pDay)
{
    int i,leap;
    leap = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
    for(i = 1; yearDay > dayTab[leap][i]; i++)
    {
        yearDay = yearDay - dayTab[leap][i];
    }
    *pMonth = i;
    *pDay = yearDay;
}

//显示一个固定式的菜单
void Menu(void)
{
    printf("1. 年,月,日 --> 是某年的多少天n");
    printf("2. 某年的多少天 --> 年,月,日n");
    printf("3. Exitn");
    printf("请输入你想用的功能:");
}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/864773.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号