C语言编写万年历

(41) 2023-12-17 16:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说C语言编写万年历,希望能够帮助你!!!。

C语言编写万年历_https://bianchenghao6.com/blog__第1张

输入年份和月份,展示当月日历


#include <stdio.h>
/**
 * 万年历
 */

//是否是闰年
int isLeap(int year)
{
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
    {
        return 1;
    }
    return 0;
}
//计算 从1900年1月1日开始 到指定年月经过了多少天
int getTotalDays(int year, int month)
{
    int totalDays = 0;
    for (int i = 1900; i < year; i++) //计算到year-1年共多少天
    {
        if (isLeap(i))
        {
            totalDays += 366;
        }
        else
        {
            totalDays += 365;
        }
    }

    //计算year年的1到month月 共多少天
    for (int m = 1; m <= month; m++)
    {

        if (m == 2)
        { // 2月
            if (isLeap(year))
            {
                totalDays += 29;
            }
            else
            {
                totalDays += 28;
            }
        }
        //每月30天的月份
        else if (m == 4 || m == 6 || m == 9 || m == 11)
        {
            totalDays += 30;
        }
        //每月31天的月份
        else
        {
            totalDays += 31;
        }
    }

    return totalDays;
}
//计算星期(参数:1900年1月1日开始 经过多少天)
int getWeekDay(int totalDays)
{
    return totalDays % 7;
}
//计算某月共多少天
int getMonthDays(int year, int month)
{
    if (month == 2)
    { // 2月
        if (isLeap(year))
        {
            return 29;
        }
        else
        {
            return 28;
        }
    }
    //每月30天的月份
    else if (month == 4 || month == 6 || month == 9 || month == 11)
    {
        return 30;
    }
    //每月31天的月份
    else
    {
        return 31;
    }
}
//打印信息
void print(int year, int month)
{
    printf("--------%d 年 %d 月 日历--------\n", year, month);
    printf("日   一   二   三   四   五   六\n");  //打印星期
    int totalDays = getTotalDays(year, month - 1); //从1900年1月1日开始到month-1月共多少天
    int weekDay = getWeekDay(++totalDays);         //计算第month月的第一天星期几

    int monthTotalDays = getMonthDays(year, month); //本月多少天

    for (int i = 0; i < weekDay; i++)
    {
        printf("     ");
    }

    for (int i = 1; i <= monthTotalDays; i++)
    {
        if (totalDays % 7 == 6)
        {
            printf("%d\n", i);
        }
        else
        {
            if (i < 10)
            {
                printf("%d    ", i);
            }
            else
            {
                printf("%d   ", i);
            }
        }
        totalDays++;
    }
    printf("\n");
}
int main()
{

    print(2023, 2);
    return 0;
}

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复