当前位置:首页 > 行业动态 > 正文

如何用c语言编写日历

在C语言中,编写日历程序可以通过多种方式实现,这里我将介绍一种简单的方法,通过使用数组和循环来实现,我们需要创建一个包含12个月的字符串数组,然后使用一个嵌套循环来遍历年份和月份,最后输出对应的日历。

以下是一个简单的C语言日历程序:

#include <stdio.h>
int main() {
    int year, month;
    printf("请输入年份: ");
    scanf("%d", &year);
    printf("请输入月份: ");
    scanf("%d", &month);
    // 定义一个包含12个月的字符串数组
    char *months[12] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
    // 获取当前年份和月份的第一天是星期几(0表示星期日,1表示星期一,以此类推)
    int first_day_of_week = (year 1900) % 4 + 1; // 1900年是闰年,所以需要特殊处理
    int first_day_of_month = (year 1900) * 365 + (year 1900) / 4 (year 1900) / 100 + (year 1900) / 400 + 1 + first_day_of_week;
    if (month > 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) {
        first_day_of_month++;
    }
    for (int i = 1; i < month; i++) {
        first_day_of_month += 31;
        if (i == 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) {
            first_day_of_month++;
        } else if (i == 4 || i == 6 || i == 9 || i == 11) {
            first_day_of_month += 30;
        } else {
            first_day_of_month += 28;
        }
    }
    first_day_of_month; // 因为数组下标从0开始,所以需要减1
    // 输出日历标题和表头
    printf("日t一t二t三t四t五t六
");
    for (int i = 0; i < first_day_of_week; i++) {
        printf("t");
    }
    for (int i = 1; i <= days_in_month[month]; i++) {
        printf("%dt", i);
        if ((i + first_day_of_week) % 7 == 0) {
            printf("
");
        }
    }
    printf("
");
    return 0;
}

这个程序首先获取用户输入的年份和月份,然后计算该年份和月份的第一天是星期几,接下来,我们使用一个循环来计算每个月的天数,并根据闰年进行调整,我们输出日历标题和表头,以及对应的日期。

注意:这个程序没有考虑每个月的天数可能不同(例如2月有28天或29天),也没有考虑每个月的第一天可能是上个月的最后一天,如果需要更精确地显示日历,可以使用time.h库中的localtime函数来获取当前日期,并根据需要调整输出。

0