用C语言计算两个日期之间的天数
计算两个日期间的天数,并在用户输入时检查月份和日期是否有误,有误时要求重新输入。
编译器为visual studio 2019
#include<stdio.h>
#include<stdlib.h>
int func1(int flag,int mon);
int func2(int mon, int day, int year);
int check(int in, int flag);
int main()
{system("color F0");int year1,year2,mon1,mon2,day1,day2,flag,i,p,n=0,m=0;void input(int *year,int *mon,int *day);void change(int* x, int* y);while (1){printf("请输入起始时间:\n");input(&year1, &mon1, &day1);printf("请输入结束时间:\n");input(&year2, &mon2, &day2);if ((year1 * 10000 + mon1 * 100 + day1) > (year2 * 10000 + mon2 * 100 + day2)){change(&year1, &year2);change(&mon1, &mon2);change(&day1, &day2);}p = year2 - year1;i = p;while (p >= 2){p = p - 1;flag = year1 + p;if ((flag % 4 == 0) && ((flag % 400 == 0) || (flag % 100 != 0))) n++;else m++;}year1 = ((year1 % 4 == 0) && ((year1 % 400 == 0) || (year1 % 100 != 0))) ? 366 : 365;year2 = ((year2 % 4 == 0) && ((year2 % 400 == 0) || (year2 % 100 != 0))) ? 366 : 365;flag = func2(mon2, day2, year2) - func2(mon1, day1, year1);if (i == 0)printf("日期相差%d天\n\n", flag);else if (i == 1)printf("日期相差%d天\n\n", flag + year1);elseprintf("日期相差%d天\n\n", flag + year1 + n * 366 + m * 365);}return 0;
}
void input(int* year, int* mon, int* day)
{int flag;printf("年:");scanf_s("%d", year);printf("月:");scanf_s("%d", mon);*mon = check(*mon,12);flag = ((*year % 4 == 0) && ((*year % 400 == 0) || (*year % 100 != 0))) ? 1 : 0;flag = func1(flag, *mon);printf("日:");scanf_s("%d", day);*day = check(*day, flag);
}
void change(int* x, int* y)
{int z;z = *y;*y = *x;*x = z;
}
int func1(int flag,int mon)
{int a, b;a = (mon == 2) ? 1 : 0;b = ((mon == 1) || (mon == 3) || (mon == 5) || (mon == 7) || (mon == 8) || (mon == 10) || (mon == 12)) ? 1 : 0;switch (a * 4 + b * 2 + flag){case 0:case 1:return 30; break;case 2:case 3:return 31; break;case 4:return 28; break;case 5:return 29; break;}
}
int func2(int mon, int day, int year)
{int flag,num=0;if (year == 365){for (flag = 1; flag < mon; flag++){num = func1(0, flag) + num;}}else{for (flag = 1; flag < mon; flag++){num = func1(1, flag) + num;}}return num + day;
}
int check(int in, int flag)
{if ((in <= flag) && (in >= 1))return in;else{printf("输入有误,请重新输入:");scanf_s("%d", &in);return check(in,flag);}
}
运行结果
用C语言计算两个日期之间的天数相关推荐
- vc 获取月份的天数_C语言计算两个日期之间的天数
计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减. 要考虑闰年的情况,判断闰年的口诀:4年一闰,100年不闰,400年再闰. ((year % 4 == 0 && year ...
- c语言日期间的天数,C语言计算两个日期之间的天数
计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减. 要考虑闰年的情况,判断闰年的口诀:4年一闰,100年不闰,400 计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减. 要考虑 ...
- 计算两个日期之间的天数(C语言实现)
计算两个日期之间的天数(C语言实现) #include <stdio.h> int date(int n,int m1,int d1,int m,int m2,int d2) {int i ...
- 如何利用计算机计算天数,如何应用Win10系统电脑中的计算器计算两个日期之间的天数?...
如何应用Win10系统电脑中的计算器计算两个日期之间的天数? 相信很多小伙伴都有在使用windows10系统的电脑,其中的计算器如何才能用来计算两个日期之间的天数呢?方法很简单,下面小编就来为大家介绍 ...
- 微软面试题目(一) 计算两个日期之间的天数
微软的面试,没能参加啊,只好打听了下题目,其中一题是在20分钟内写出:计算两个日期之间天数的方法.昨天晚上想了一下,今天实现了一下,经过调试,差不多一个小时才弄好,惭愧啊 代码如下: /******* ...
- sql年月日加减法,计算两个日期之间的天数
1.年月日加减法(时间字段为 hiredate,表名为 emp) DB2 selecthiredate -5 day as hd_sub_5day,hiredate +5 day as hd_add ...
- 计算两个日期之间的天数,你知道哪些函数能够计算呢?
有时候我们需要计算两个日期之间的天数,一般情况下只需要计算一两个的话可以直接口算,但是整个表格的日期都需要计算出他们之间的天数,还是用口算的方法吗?当然不能这么浪费时间!Excel中有计算两个日期之间 ...
- java怎么计算相隔多少天_java计算两个日期之间相差天数和相隔天数详解
大家看到文章标题"两个日期之间相差天数和相隔天数",是否有疑惑呢!从中文字面理解,"相差"和"相隔"是有区别的,然而就是这些区别害死很多人, ...
- JavaScript:实现计算两个日期之间的天数算法(附完整源码)
JavaScript:实现计算两个日期之间的天数算法 const isLeap = (year) => {if (year % 400 === 0) return trueelse if (ye ...
最新文章
- linux 查看 文档 不显示注释 命令
- 【Applet编写应用小程序】Applet类APIの基本知识和第一个程序
- PHP路径realpath __FILE__ __DIR__ dirname
- [转]微信小程序登录逻辑梳理
- eclipse中无法新建Android工程 出现问题:Plug-in org.eclipse.ajdt.ui was unable to load
- httppost请求工具类
- matlab安装matconvnet
- 别把项目成功当目标!——项目经理的误区(1)(转)
- excel 计算机职称,职称计算机2017年Excel知识点:工作表的编辑
- easyUpload.js插件文件上传
- 编程珠玑第二版 ---- 第一章个人习题集(Java)
- 火影T5A笔记本系统损坏了无法进入桌面怎么办?
- 黄金再次失守千八关口 对冲基金空头寸增加
- 迅雷近几年笔试题及其分析
- 电脑连不上网一般处理方式
- 一些关于船舶撞桥的数据
- matlab做偏最小二乘回归(PLS带精度验证)
- 论文python爬虫_论的解释|论的意思|汉典“论”字的基本解释
- linux脚本剪切文件覆盖了怎么恢复,剪切的文件如何恢复 被剪切或删除的文件夹怎么恢复...
- 数字从0递增到指定数值
热门文章
- 多媒体高精度定时器介绍
- 思享无限组建技术团队;伏达半导体推出50W车载无线充解决方案;峰米科技推出超短焦激光投影仪 | 全球TMT...
- 案例:模拟人造卫星沿轨道围绕地球旋转
- 以后都不会用altium designer!!!
- About BlueStacks 模拟器
- 神经机器翻译中的关键技术
- 计算机bios设置中英文翻译,主板BIOS界面全英文翻译 分享一个主板BIOS设置英文对照表大全...
- 区块链技术对电商的影响
- mvc 模型验证及正则表达式
- weiit—全渠道新零售saas,重构“人、货、场”