C语言实现万年历(含代码详细解读)

一、前言

        在计算机编程中,制作一个万年历是一项非常实用的任务。它不仅可以帮助我们查看任何年份的日历,还可以让我们理解如何使用编程语言处理日期和时间。本文将详细介绍如何使用C语言编写一个简单的万年历程序。

二、程序结构

        在进行万年历编写的过程中我们必须得先解决平年和闰年判断的问题。

                1、闰年:可被4整除但不可被100或者可被400整除。

                2、平年:除闰年外都是平年。

        故我们可以设计一个函数来专门判断其是否为闰年,如下图所示:

C语言实现万年历(含代码详细解读)_第1张图片

        然后我们得知道每年的第一天为星期几

        传入一个形参n代表年数,通过对年份的遍历如是闰年则总天数加366,如是平年则总天数加365,最后对7求余即可得出该年份第一天是星期几了,当总天数求余为零时,我们通过一个if语句将其改为星期日,并返回主函数一个该年第一天是周几的值。

        故我们可以设计另一个函数来对其判断,如下图所示

C语言实现万年历(含代码详细解读)_第2张图片

        其次我们还需要知道每个月的第一天是星期几才可以编制万年历

        传入年份形参n和月份形参n,再定义一个数组months[13]其中包含一个0和12个月的天数,使用if语句进行判断闰平年。如是闰年二月则为29天,平年则为28天,让sum的初始值为该年第一天的星期几这样当判断1月的时候不会使得出现months[-1]使得乱码,最后对7求余得到该月的第一天是星期几。

        C语言实现万年历(含代码详细解读)_第3张图片

        编写万年历

        同样先定义数组months[13]再定义enter用来存储当月第一天是星期几,再对其判断闰平年,其次遍历12个月份,使用for循环将1号推至该月第一天是星期几的位置,如果是星期日则换为0,不用推,然后遍历该月的天数,如果天数k+enter-1的数对7求余为0且k不是第一天则换行输出k再继续遍历天数(如果当k = 1时符合其条件会造成一些月份第一行为空)

C语言实现万年历(含代码详细解读)_第4张图片

到此只需在主函数中调用这些函数便可制成万年历了

C语言实现万年历(含代码详细解读)_第5张图片

运行结果如下:

C语言实现万年历(含代码详细解读)_第6张图片

如有观点可在评论区讨论,本人是一位新手小白有不周的地方请多见谅!!!

你可能感兴趣的:(C语言,c语言,开发语言)