判断某年某月某日是一年中的第几天,并判断是星期几(指针)

该程序接收用户输入的日期,通过判断年份是否为闰年来调整二月的天数,然后计算出该日期是当年的第几天以及是星期几。使用了特定的公式来确定闰年和日期对应的星期。在主函数中调用了子函数进行计算,并输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按要求输入一个日期,计算是这年的第几天和星期几,然后在main()调用子函数中输出结果。

给出已知信息:

1.闰年的判断公式:年份能被4整除不能被100整除,或是能被400整除;

2.某年y的元旦是星期几的判断公式:(y+(y-1)/4-(y-1)/100+(y-1)/400)%7 (0表示星期天)

3.isleap(): 返回一个年份是否是闰年;

4.week(): 计算该日期是这年的第几天, 并计算是星期几, 返回这两个计算结果;

#include<stdio.h>

const char* weekday[] = { "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" };
const char* months[] = { "January", "February", "March", "April", "May", "June", "July", "August",
                    "September", "October", "November", "December" };
int dayspermonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

int isleap(int y)
{
    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
        return 1;
    else
        return 0;
}//isleap

void week(int y,int m,int d,int *pd,int *pw)
{
    int i;
    *pd = 0,*pw = 0;
    for (i = 1; i < m; i++)
    {
        *pd += dayspermonth[i];
    }//for
    *pd += d;
    int t = (y + (y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400) % 7;//为计算1-1为周几
    int l = *pd % 7;//为计算,假设 1-1为周一,则输入日期为一周的第几天,0为第7天
    *pw = (l + t - 1) % 7;//计算当1-1为t时,输入日期为周几,要减去1-1日的当天所以减一
}//week

int main()
{
    int year, month, day;
    scanf("%d-%d-%d", &year, &month, &day);
    int t = isleap(year);//调用函数判断是否闰年 
    if (t) {
        dayspermonth[2] += 1;  // 是闰年, 二月份+1 
    }//if

    int d, w;
    week(year, month, day, &d, &w);
    printf("%d\n", d);
    printf("%s", weekday[w]);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值