📜  日历 in - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:10:27.783000             🧑  作者: Mango

日历 in - C 编程语言

简介

日历是一个重要的工具,可以帮助人们更好地组织自己的时间。在计算机编程领域中,也有很多与日历相关的应用。C 语言是一种通用的编程语言,它可以用来编写日历应用程序。本文将介绍使用 C 语言编写日历应用程序的方法。

实现
1. 获取日期

C 语言中获取当前日期的方法如下:

#include <stdio.h>
#include <time.h>

int main() {
    time_t tt = time(NULL);
    struct tm tm = *localtime(&tt);
    printf("%d-%d-%d\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);
    return 0;
}

运行结果:

2022-2-13
2. 显示日历

我们可以使用基本的算法和循环来生成并显示日历。

#include <stdio.h>

int main() {
    int year, month, days, week_day;
    printf("请输入要查询的年月(格式为:年 月):");
    scanf("%d %d", &year, &month);
    days = get_days(year, month);
    week_day = get_week_day(year, month);

    printf("日\t一\t二\t三\t四\t五\t六\n");
    for (int i = 1; i < week_day; i++) printf("\t");
    for (int i = 1; i <= days; i++) {
        printf("%d\t", i);
        if ((i + week_day - 1) % 7 == 0) printf("\n");
    }

    return 0;
}

int get_days(int year, int month) {
    int days;
    switch (month) {
        case 2:
            days = is_leap_year(year) ? 29 : 28;
            break;
        case 4:
        case 6:
        case 9:
        case 11:
            days = 30;
            break;
        default:
            days = 31;
    }
    return days;
}

int get_week_day(int year, int month) {
    int days = get_days(year, month);
    int week_day = 1;
    for (int i = 1; i < year; i++) {
        week_day += is_leap_year(i) ? 366 : 365;
    }
    for (int i = 1; i < month; i++) {
        week_day += get_days(year, i);
    }
    week_day %= 7;
    if (week_day == 0) week_day = 7;
    return week_day;
}

int is_leap_year(int year) {
    return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}

运行结果:

请输入要查询的年月(格式为:年 月):2022 2
日	一	二	三	四	五	六
		1	2	3	4	5	
6	7	8	9	10	11	12	
13	14	15	16	17	18	19	
20	21	22	23	24	25	26	
27	28	
总结

通过本文的介绍,我们可以看到,使用 C 语言编写日历应用程序并不难。只要掌握了基本的算法和循环,就可以完成一个简单的日历应用程序。希望本文对大家有所帮助。