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

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

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

#include<stdio.h>
#include<stdlib.h>

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,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};

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. Exit\n");
    printf("请输入你想用的功能:");
}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Color20

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

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

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

打赏作者

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

抵扣说明:

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

余额充值