您的位置: 主页>语言大全 >用C语言实现功能强大的日历

用C语言实现功能强大的日历

来源:www.diurehu.com 时间:2024-06-12 04:07:00 作者:长短语言网 浏览: [手机版]

  日历是人们日常活中必不可少的工具,可以帮助我们记录时间、安排活和工长+短+语+言+网。在计算机科中,我们可以通过编写程序来实现日历的功能www.diurehu.com。本将介绍如何使用C语言编写一个功能强大的日历程序长 短 语 言 网

用C语言实现功能强大的日历(1)

实现日历基本功能

  首,我们需要实现日历的基本功能,包括显示当前日期、显示指定年份月份的日历、显示指定日期的星期几等原文www.diurehu.com。下是实现这些功能的代码:

  ```c

  #include

#include

#include

  // 获取当前日期

void get_current_date(int *year, int *month, int *day) {

  time_t t = time(NULL);

  struct tm *tm = localtime(&t);

  *year = tm->tm_year + 1900;

  *month = tm->tm_mon + 1;

  *day = tm->tm_mday;

  }

// 获取指定年份月份的天数

  int get_days_in_month(int year, int month) {

  int days = 0;

switch (month) {

  case 2:

  days = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 29 : 28;

  break;

  case 4:

  case 6:

case 9:

  case 11:

  days = 30;

  break;

  default:

days = 31;

  break;

}

  return days;

  }

  // 获取指定日期的星期几

int get_weekday(int year, int month, int day) {

struct tm tm = {0};

  tm.tm_year = year - 1900;

  tm.tm_mon = month - 1;

  tm.tm_mday = day;

time_t t = mktime(&tm);

  struct tm *result = localtime(&t);

  return result->tm_wday;

  }

// 显示指定年份月份的日历

  void print_calendar(int year, int month) {

int days = get_days_in_month(year, month);

int weekday = get_weekday(year, month, 1);

printf("%d年%d月\n", year, month);

printf("日 一 三 四 五 六\n");

  for (int i = 0; i < weekday; i++) {

printf(" ");

  }

  for (int i = 1; i <= days; i++) {

  printf("%2d ", i);

  if ((i + weekday) % 7 == 0) {

  printf("\n");

  }

}

printf("\n");

  }

  int main() {

int year, month, day;

get_current_date(&year, &month, &day);

  printf("当前日期:%d年%d月%d日\n", year, month, day);

print_calendar(year, month);

  return 0;

}

  ```

  运行程序,可以看到输出了当前日期和当前月份的日历:

  ```

  当前日期:2022年1月1日

  2022年1月

  日 一 三 四 五 六

  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 29

30 31

```

用C语言实现功能强大的日历(2)

添加更多功能

  除了基本功能,我们还可以添加更多功能,使日历程序更加实用Snu。下是一些常用的功能:

1. 显示指定日期的农历日期

2. 显示指定日期的节日

3. 添加日程安排功能

  下是实现这些功能的代码:

  ```c

  #include

  #include

  #include

  #include "lunar.h"

  // 获取当前日期

  void get_current_date(int *year, int *month, int *day) {

time_t t = time(NULL);

  struct tm *tm = localtime(&t);

*year = tm->tm_year + 1900;

*month = tm->tm_mon + 1;

  *day = tm->tm_mday;

  }

  // 获取指定年份月份的天数

  int get_days_in_month(int year, int month) {

  int days = 0;

switch (month) {

case 2:

  days = ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 29 : 28;

  break;

case 4:

case 6:

  case 9:

case 11:

days = 30;

break;

  default:

  days = 31;

break;

}

return days;

  }

  // 获取指定日期的星期几

  int get_weekday(int year, int month, int day) {

  struct tm tm = {0};

  tm.tm_year = year - 1900;

  tm.tm_mon = month - 1;

  tm.tm_mday = day;

time_t t = mktime(&tm);

  struct tm *result = localtime(&t);

  return result->tm_wday;

}

// 显示指定年份月份的日历

  void print_calendar(int year, int month) {

  int days = get_days_in_month(year, month);

  int weekday = get_weekday(year, month, 1);

  printf("%d年%d月\n", year, month);

  printf("日 一 三 四 五 六\n");

for (int i = 0; i < weekday; i++) {

  printf(" ");

}

  for (int i = 1; i <= days; i++) {

int lunar_day, lunar_month, lunar_year, leap;

  solar_to_lunar(year, month, i, &lunar_year, &lunar_month, &lunar_day, &leap);

printf("%2d", i);

if (lunar_day == 1) {

  printf("(%s)", lunar_month_name[lunar_month - 1]);

  } else {

  printf("(%s)", lunar_day_name[lunar_day - 1]);

}

  printf(" ");

  if ((i + weekday) % 7 == 0) {

  printf("\n");

  }

  }

printf("\n");

  }

// 获取指定日期的节日

  void get_holiday(int year, int month, int day, char *holiday) {

  int is_holiday = 0;

switch (month) {

  case 1:

if (day == 1) {

sprintf(holiday, "元旦");

is_holiday = 1;

}

  break;

case 2:

if (day == 14) {

  sprintf(holiday, "情人节");

  is_holiday = 1;

  }

  break;

  case 3:

  if (day == 8) {

  sprintf(holiday, "妇女节");

  is_holiday = 1;

  }

if (day == 12) {

sprintf(holiday, "植树节");

  is_holiday = 1;

}

  if (day == 15) {

  sprintf(holiday, "消费者权益日");

  is_holiday = 1;

  }

break;

  case 4:

  if (day == 1) {

sprintf(holiday, "愚人节");

  is_holiday = 1;

  }

  if (day == 22) {

  sprintf(holiday, "地球日");

  is_holiday = 1;

  }

  break;

  case 5:

  if (day == 1) {

sprintf(holiday, "劳动节");

  is_holiday = 1;

  }

  if (day == 4) {

sprintf(holiday, "青年节");

  is_holiday = 1;

  }

  if (day == 12) {

sprintf(holiday, "士节");

is_holiday = 1;

  }

  break;

case 6:

  if (day == 1) {

sprintf(holiday, "儿童节");

is_holiday = 1;

}

if (day == 5) {

  sprintf(holiday, "环境日");

  is_holiday = 1;

  }

  break;

  case 7:

  if (day == 1) {

  sprintf(holiday, "建党节");

is_holiday = 1;

  }

if (day == 11) {

  sprintf(holiday, "世界人口日");

  is_holiday = 1;

  }

  break;

  case 8:

  if (day == 1) {

  sprintf(holiday, "建军节");

  is_holiday = 1;

  }

  if (day == 15) {

sprintf(holiday, "抗战胜利日");

  is_holiday = 1;

  }

  break;

  case 9:

  if (day == 10) {

  sprintf(holiday, "教师节");

  is_holiday = 1;

}

  if (day == 18) {

  sprintf(holiday, "九·一八事变纪念日");

is_holiday = 1;

}

  if (day == 28) {

  sprintf(holiday, "孔子诞辰");

  is_holiday = 1;

  }

  break;

  case 10:

if (day == 1) {

sprintf(holiday, "国庆节");

is_holiday = 1;

  }

  if (day == 31) {

  sprintf(holiday, "万圣节");

is_holiday = 1;

  }

  break;

  case 11:

if (day == 11) {

  sprintf(holiday, "光棍节");

  is_holiday = 1;

  }

  if (day == 14) {

sprintf(holiday, "世界糖尿病日");

  is_holiday = 1;

}

break;

  case 12:

if (day == 1) {

  sprintf(holiday, "世界艾滋病日");

  is_holiday = 1;

  }

if (day == 24) {

  sprintf(holiday, "平安夜");

  is_holiday = 1;

  }

  if (day == 25) {

  sprintf(holiday, "圣诞节");

  is_holiday = 1;

  }

  break;

  default:

break;

}

  if (!is_holiday) {

sprintf(holiday, "");

  }

  }

  // 添加日程安排

  void add_schedule(int year, int month, int day, char *schedule) {

  char filename[20];

  sprintf(filename, "%d%d%d.txt", year, month, day);

  FILE *fp = fopen(filename, "a");

  if (fp == NULL) {

  printf("打开件失败!\n");

  return;

}

  fprintf(fp, "%s\n", schedule);

  fclose(fp);

  }

  // 显示指定日期的日程安排

  void show_schedule(int year, int month, int day) {

  char filename[20];

  sprintf(filename, "%d%d%d.txt", year, month, day);

  FILE *fp = fopen(filename, "r");

  if (fp == NULL) {

  printf("没有日程安排!\n");

  return;

  }

  char schedule[100];

while (fgets(schedule, 100, fp)) {

printf("%s", schedule);

  }

fclose(fp);

  }

int main() {

  int year, month, day;

get_current_date(&year, &month, &day);

printf("当前日期:%d年%d月%d日\n", year, month, day);

char holiday[20];

get_holiday(year, month, day, holiday);

  printf("今天是:%s\n", holiday);

print_calendar(year, month);

printf("输入日程安排:");

char schedule[100];

  fgets(schedule, 100, stdin);

  add_schedule(year, month, day, schedule);

printf("日程安排添加成功!\n");

show_schedule(year, month, day);

return 0;

}

  ```

  运行程序,可以看到输出了当前日期、今天的节日、当前月份的日历,并且可以添加日程安排和查看指定日期的日程安排:

  ```

当前日期:2022年1月1日

  今天是:元旦

  2022年1月

  日 一 三 四 五 六

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(廿七) 29(廿八)

  30(廿九) 31(三十)

  输入日程安排:开会

  日程安排添加成功!

  开会

  ```

总结

介绍了如何使用C语言编写一个功能强大的日历程序,包括显示当前日期、显示指定年份月份的日历、显示指定日期的星期几、显示指定日期的农历日期、显示指定日期的节日、添加日程安排和查看指定日期的日程安排等功能长.短.语.言.网。通过习本,读者可以深入了解C语言的时间和日期处理,以及件操长 短 语 言 网

0% (0)
0% (0)
标签:C语言实现
版权声明:《用C语言实现功能强大的日历》一文由长短语言网(www.diurehu.com)网友投稿,不代表本站观点,版权归原作者本人所有,转载请注明出处,如有侵权、虚假信息、错误信息或任何问题,请尽快与我们联系,我们将第一时间处理!

我要评论

评论 ( 0 条评论)
网友评论仅供其表达个人看法,并不表明好好孕立场。
最新评论

还没有评论,快来做评论第一人吧!
相关文章
  • 如何提高英语口语水平_用c语言编写二三阶行列式

    英语口语是很多人学习英语时最难攻克的一项技能。很多人在学习英语时,经常会遇到这样的情况:听懂了别人说的话,但是自己却不知道该怎么回答。这就是口语能力的不足所导致的。那么,如何提高英语口语水平呢?一、多听多说多听多说是提高英语口语水平的最基本方法。可以通过听英语广播、看英语电影、听英语歌曲等方式来提高自己的听力水平。

    [ 2024-06-12 03:56:16 ]
  • C语言访问网站:探索网络世界的新视角

    随着互联网的快速发展,我们的生活也变得越来越依赖于网络。我们可以通过网络购物、学习、娱乐等等。而C语言作为一门编程语言,也可以用来访问网站,获取网络数据。本文将介绍C语言访问网站的方法和应用场景。一、C语言访问网站的方法C语言访问网站的方法主要有两种:使用socket编程和使用curl库。1. 使用socket编程

    [ 2024-06-12 03:33:52 ]
  • 软件宣传语言的重要性及如何撰写有效的宣传语言

    随着互联网和移动设备的普及,软件已经成为人们生活中不可或缺的一部分。而在激烈的市场竞争中,软件宣传语言的重要性也越来越凸显出来。一句简洁有力的宣传语言可以让消费者对软件产生浓厚的兴趣,甚至成为购买的决定因素。因此,撰写有效的软件宣传语言对软件的推广和销售至关重要。一、软件宣传语言的重要性1. 吸引消费者的注意力

    [ 2024-06-12 03:24:17 ]
  • 古代说什么语言的

    古代使用的语言有很多种,不同的地区和时期使用的语言也有所不同。以下是关于古代使用的一些主要语言的简要介绍。1. 古汉语:古汉语是中国古代的主要语言,也是现代汉语的前身。古汉语在中国历史上的不同时期有不同的变体,如古代汉语、中古汉语和近代汉语等。古汉语在古代文献、经典著作和历史记录中被广泛使用。

    [ 2024-06-12 03:12:34 ]
  • 语言结构的概念及特点

    语言是人类交流的工具,也是人类思维的表达方式。语言的结构是语言学中的一个重要概念,它指的是语言中各个部分之间的关系和组织方式。语言结构的特点是多样性和复杂性,不同的语言有不同的结构,而同一语言也有不同的结构层次。一、语言结构的概念语言结构是指语言中各个部分之间的关系和组织方式,包括音位、词汇、语法、语义和语用等方面。

    [ 2024-06-12 02:52:13 ]
  • 探讨职业教育的未来发展方向

    随着社会的发展,职业教育已经成为了教育领域的重要组成部分。而在未来,职业教育的发展方向将会面临着哪些挑战和机遇呢?一、提高职业教育的质量职业教育的质量是保证学生能够顺利就业的关键。在未来,职业教育需要更加注重学生的实际能力和技能培养,而非仅仅是理论知识的传授。同时,职业教育的教学内容也需要与市场需求相结合,更好地满足社会的需求。

    [ 2024-06-12 02:27:30 ]
  • 探究人工智能在教育中的应用

    随着科技的不断发展,人工智能逐渐进入我们的生活。在教育领域,人工智能也开始被广泛应用。它可以帮助教师更好地了解学生的学习情况,提供个性化的教育方案,同时也可以为学生提供更好的学习体验和更高效的学习方式。一、人工智能在教育中的应用1. 智能教学系统

    [ 2024-06-12 02:04:49 ]
  • Java语言的浮点数

    Java是一种面向对象的编程语言,它支持整型、浮点型、字符型等多种数据类型。其中,浮点数是一种非常重要的数据类型,也是Java中最常用的数据类型之一。浮点数是一种用于表示实数的数据类型,它包括单精度浮点数和双精度浮点数两种形式。单精度浮点数用4个字节(32位)存储,可以表示的范围是从1.4E-45到3.4028235E38;双精度浮点数用8个字节(64位

    [ 2024-06-12 01:53:48 ]
  • 苗族语言障碍的原因及其影响

    苗族是中国少数民族之一,主要分布在贵州、云南、广西等地。苗族语言是苗族人民的母语,但由于各种原因,苗族语言障碍逐渐成为一个严重的问题。本文将探讨苗族语言障碍的原因及其影响。一、苗族语言障碍的原因1. 教育问题苗族地区的教育资源相对匮乏,导致苗族孩子在学校学习时只能使用汉语。这使得苗族语言的使用受到限制,难以得到有效的传承和发展。

    [ 2024-06-12 01:42:37 ]
  • 如何用C语言设计UI界面?

    UI(User Interface)界面设计是软件开发中非常重要的一环,它直接关系到用户的使用体验。在C语言中,由于其底层语言特性,UI界面的设计相对较为困难,但是我们可以通过一些技巧和工具来实现。一、使用图形库C语言中常用的图形库有OpenGL、SDL、GTK+等,它们提供了一些绘图函数,可以用来设计UI界面。

    [ 2024-06-12 01:21:28 ]