一个工作日计算器(C 语言编写,无指针结构体版)

这是一段介绍如何使用C语言编写一个计算工作日和自然日天数的代码的故事。由于工作中对于计算项目周期的需求,作者决定编写这样一个工具,以替代之前依赖的网站。代码中没有使用结构体和指针,而是通过简单的数组和逻辑来实现。该程序在C-Free和VS环境下都能运行。作者承诺未来可能对代码进行改进。
摘要由CSDN通过智能技术生成

迈出第一步往往是困难的,只愿前路回首,既无风雨也无愁!
这是一份计算工作日天数、自然日天数的代码。编写的起因是前公司经常需要提交项目周期计划给销售,所以经常用到计算工作日的软件,一开始我们都是翻着日历,上网查法定假日,然后将工作日摘出来计算项目交期;后来我找到了一个网站,可以计算工作日间隔、或者根据工作日计算最终交期,于是发给边上同事使用;再后来,我就离职跑路了~
离职后的某天,一个同事找我聊天,说是之前的网站找不到了,于是便萌生了自己写一版的想法,于是乎,下面这份代码就产生了。
思路是建立一个大的数组,内部用0或1标识工作日和非工作日,然后通过给定的条件计算工作日或截止日期,没有用到结构体、指针等高级技巧,因为当时我用的不好,所以就没敢上,使用C-Free软件编写,但是我也试着把它改到VS上跑了一下,也是木有问题的~
写的灰常灰常的挫,请不小心看到的大佬轻喷~
后续有时间再更新,但愿我不会偷懒~(不可能 :)

#include <stdio.h>
#include <string.h>
#include <stddef.h>
int Year_2019_Data[]={
   0,31,28,31,30,31,30,31,31,30,31,30,31};
int Year_2020_Data[]={
   0,31,29,31,30,31,30,31,31,30,31,30,31};
int OutputDays = 0;//输出天数 
int sumNutureDate(int year1,int month1,int day1,int year2,int month2,int day2); 
void ReleaseLog(void);
void weekendInit(void);
void InsertHoliday(int write2holiday);
void InsertWorkday(int write2workday);
int sum_MONTH_DAYS(int year,int month1,int day1,int month2,int day2);
//定义每一个月初第一周的星期类型
int get_2019_week[]={
   0, 0x06,0x30,0x30,0x03,0x0C, 
						0x60,0x03,0x18,0x41,0x06,  
						0x30,0x41};
int get_2020_week[]={
   0, 0x0C,0x60,0x41,0x0C,0x30,
						0x03,0x0C,0x60,0x06,0x18,
						0x41,0x06};
int weeks2019[13][32]={
   0};
int weeks2020[13][32]={
   0};

int insert_holiday[] = {
    	20190101,//元旦 
							20190204,20190205,20190206,20190207,20190208,20190209,20190210,//春节 
							20190405,20190406,20190407,//清明 
							20190501,20190502,20190503,//劳动
							20190607,20190608,20190609,//端午节
							20190913,20190914,20190915,//中秋节 
							20191001,20191002,20191003,20191004,20191005,20191006,20191007,//国庆节
							20200101,//元旦 
							20200124,20200125,20200126,20200127,20200128,20200129,20200130,20200131,20200201,20200202,//春节
							20200404,20200405,20200406,//清明 
							20200501,20200502,20200503,20200504,20200505,//劳动节 
							20200625,20200626,20200627,// 端午节
							20201001,20201002,20201003,20201004,20201005,20201006,20201007,20201008//国庆&中秋 	 
					     };
int insert_workday[] = {
   	20190202,20190203,20190428,20190505,20190929,20191012,
							20200105,20200119,20200426,20200509,20200628,20200927,20201010
						};
//数据交换函数 
void swap(int a, int b) //引用类型方式  
{
     
    int temp; //辅助变量  
    temp = a;  
    a = b;  
    b = temp;     
}  
//日期解析
int DataAnalysis(int Frist,int End)
{
   
	int nuture_date=0;//定义返回值 
	int year1,month1,day1;//年月日参数,仅支持2019年1月1日-2020年12月31日 
	int year2,month2,day2;	
	year1 = Frist/10000;
	month1 = (Frist/100)%100;
	day1 = Frist%100;
	
	year2 = End/10000;
	month2 = (End/100)%100
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值