📅  最后修改于: 2023-12-03 15:10:27.783000             🧑  作者: Mango
日历是一个重要的工具,可以帮助人们更好地组织自己的时间。在计算机编程领域中,也有很多与日历相关的应用。C 语言是一种通用的编程语言,它可以用来编写日历应用程序。本文将介绍使用 C 语言编写日历应用程序的方法。
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
我们可以使用基本的算法和循环来生成并显示日历。
#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 语言编写日历应用程序并不难。只要掌握了基本的算法和循环,就可以完成一个简单的日历应用程序。希望本文对大家有所帮助。