C语言实现日历小项目(calendar---大西红柿)

C语言实现日历(calendar—大西红柿)

框架主要如下:

  1. 代码主要分为三个部分,main.c calendar.c(主要包括功能代码) calendar.h(头文件以及函数声明)
  2. 下面先来带大家看一下功能代码
#include "calendar.h"
int IsLeapYear(int year)   //判断一年是否为闰年
{
	return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}

int dayOfTheMonth(int year, int month)	//判断某年的某月份有多少天
{
	int day = -1;

	if (1 == month || 3 == month || 5 == month || 7 == month || 8 == month || 10 == month || 12 == month)
	{
		day = 31;
	}
	else if (4 == month || 6 == month || 9 == month || 11 == month)
	{
		day = 30;
	}
	else 
	{
		if (IsLeapYear(year))
		{
			day = 29;
		}
		else 
		{
			day = 28;
		}
	}

	return day;
}

int dayOfcurYearFrom1900(int year, int month)	//计算1900年到目前月份(即就是需要打印日历月份)所经历的总天数
{
	int day = 0;
	int i = 0;

	for (i = 1900;i < year;++i)
	{
		if (IsLeapYear(i))
		{
			day += 366;
		}
		else
		{
			day += 365;
		}
	}
	for(i = 1;i < month; ++i)
	{
		day += dayOfTheMonth(year, i);
	}
	return day;
}

int weekdayOfFirstDay(int year, int month)	//在计算出总天数后,计算month的第一天是周几(这里计算出的0为周末)
{
	return (dayOfcurYearFrom1900(year, month) + 1) % 7;
}

void displayMonth(int year, int month)		//功能显示模块
{
	char week[7][10] = {"Sun", "Mon", "Tue", "Wen", "Thu", "Fri", "Sat"};
	int day = 0;
	int i = 0;

	day = weekdayOfFirstDay(year, month);

	for (i = 0;i < 7;++i)
	{
		printf("  %s  ", week[i]);
	}
	putchar('\n');
	for (i = 0;i < day;++i)
	{
		printf("       ");
	}
	for (i = 1;i <= dayOfTheMonth(year, month);++i)
	{
		printf("  %3d  ", i);
		if ((day + i) % 7 == 0)
		{
			putchar('\n');
		}
	}

	putchar('\n');
	return ;
}

上面部分就是所有功能代码的部分,都是用函数进行编写,使得功能模块化;

  1. 下面带大家看一下calendar.h部分,也是非常重要滴!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
extern int weekdayOfFirstDay(int year, int month);
extern int dayOfcurYearFrom1900(int year, int month);
extern int dayOfTheMonth(int year, int month);
extern int IsLeapYear(int year);
void displayMonth(int year, int month);

这里呢其实是对用到头文件的包含以及对.c文件中函数的声明,以便于后续在main.c中进行调用;

  1. 快!快来看main.c中的内容,哈哈哈,是不是非常的简单!这个就是函数模块化的优点,复杂的问题被函数模块化,哈哈哈,是不是代码异常清爽呢!
#include "calendar.h"

int main(int argc, const char *argv[])
{
	
	int year, month;

	scanf("%d%d", &year, &month);
	displayMonth(year, month);
	return 0;
}

本期的分享就到此结束啦!需要源码的同学们滴滴我(qq:1462161851)或者链接下载即可!
链接:https://pan.baidu.com/s/1ISvLclZqwjZF3cQDPMCP1g?pwd=bjv1
提取码:bjv1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值