C语言:输入起始日期与截至日期,计算相距天数。_江乌好困的博客-程序员ITS203_输入日期计算距今的时间c语言

技术标签: c语言  日期计算  

C语言:输入起始日期与截至日期,计算相距天数。

#include <stdio.h>
//输入两个日期,计算它们相隔的天数。
//判断是不是闰年
int year(int year) {
    
	if ((year % 4==0) && (year % 100!=0)|| year % 400 ==0)
	   return 1;
	else
	return 0;
}
//根据年份(润or平)输出月份有多少天
int month(int month,int year1) {
    
	int day = 0;
	if ((year(year1))==1) 
	{
       
		//为润年
		switch (month) 
		{
    
		case(1):day = 31; break;
		case(2):day = 29; break;
		case(3):day = 31; break;
		case(5):day = 31; break;
		case(7):day = 31; break;
		case(8):day = 31; break;
		case(10):day = 31; break;
		case(12):day = 31; break;
		default: day = 30;
		}
	}
	else
	    //为平年
		switch (month)
		{
    
		case(1):day = 31; break;
		case(2):day = 28; break;
		case(3):day = 31; break;
		case(5):day = 31; break;
		case(7):day = 31; break;
		case(8):day = 31; break;
		case(10):day = 31; break;
		case(12):day = 31; break;
		default: day = 30;
		}
	return day;
}
int yearday(int j) {
    
	int dd = 0;
	int year = j;
	for (int i = 1; i <= 12; i++)
		dd += month(i,year);
	return dd;
}
int main() {
    
	int year1, month1, day1;
	int year2, month2, day2;
	//dy是年差,dm是月差,dd是天差
	int dy = 0, dm = 0, dd = 0;
	printf("起始日期:");
	scanf_s("%d/%d/%d", &year1, &month1, &day1);
	printf("截至日期:");
	scanf_s("%d/%d/%d", &year2, &month2, &day2);
	//起始日期为year1/month1/day1
	//截至日期为year2/month2/day2
	
	//如果两个日期在同一年
	if (year1 == year2) 
	{
    
	    //如果两个日期在同年同月
		if (month1 == month2) 
		{
    
			dd = day2 - day1;
		}
		//如果两个日期是同两不同月
		else
		{
       
			//第一步 计算month1没过完的天数,再加上month1与month2之间空白月的总天数。
			int year = year1;
			dm = month2 - month1;
			for (dm = dm - 1; dm > 0; dm--)
			{
    
			    //再注释:month( month,year)函数是返还对应天数
				dd += month(month1 + dm,year);
			}
			dd += ((month(month1,year) - day1));			
			//第二步 加上month2的day2
			dd += day2;
		}
	}
	//两日期不在同一年
	else
	{
    
		//计算year1与year2之间空白年之间的总天数
		dy = year2 - year1;
		for (dy = dy - 1; dy > 0; dy--)
		{
       
			int year = year1 + dy;
			for(int i=1;i<=12;i++)
			dd += month(i,year);
		}
		//计算year2有多少天
		int year = year2;
		for (int i = 1; i < month2; i++)
		{
    
			dd += month(i,year);
		}
		dd += day2;
		//计算year1剩余多少天
		year = year1;
		//dd1是year1过了几天
		int dd1 = 0;
		for (int i = 1; i < month1; i++)
		{
    
			dd1 += month(i,year);
		}
		dd1 += day1;
		//将year1剩余的天数加入dd
		dd += (yearday(year1) - dd1);
	}
	printf("间距%d天", dd);
}

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_51323520/article/details/112120534

智能推荐

前端基础知识_是日前端的博客-程序员ITS203_计算机前端知识

一、常用快捷键复制:Ctrl+c粘贴:Ctrl+v剪切:Ctrl+x全选:Ctrl+a保存:Ctrl+s撤销一步:Ctrl+z返回桌面:Windows+d我的电脑:Windows+e打开运行:Windows+r切换软件:Alt+tab软件文档之间的切换:Ctrl+tab重命名:F2刷新页面:F5二、前端知识网页主要是由文字、图片和按钮等元素构成,还可以包含音频、...

2010-01-18_DoMyBest_Zhgc的博客-程序员ITS203

2010-01-18    晴      要记得公司对你的不好,为以后离开公司找一个好的借口。      消除郁闷,心情不爽的最好方法是抽时间把目前比较复杂的事情处理掉。      我好像有些自卑,对于目前一些领导,我很少愿意和他们去交流说话,因为总感觉他们有一种高高在上的态度,不愿意和这种人讲话,倒也不是怕,就是不喜欢,个人风格。其实谁欠谁呢,谁怕谁呢,说白了我们都是社会的公民,我们

JavaScript(一)_番茄火锅rrds的博客-程序员ITS203

JavaScript一、JavaScript的组成三部分二、JS的三种写法一、JavaScript的组成三部分&nbsp;&nbsp;&nbsp;&nbsp;1、ECMAScript ( JS语法 )&nbsp;&nbsp;&nbsp;&nbsp;2、DOM( 页面文档对象模型 )&nbsp;&nbsp;&nbsp;&nbsp;3、BOM( 浏览器对象模型 )二、JS的三种写法&nbsp;&nbsp;&nbsp;&nbsp;1、行内嵌入式&lt; ... onlink = "alert ( .

GDB 调试_sfyt2000的博客-程序员ITS203

我们需要得到当前进程的函数调用栈的情况,以此回溯找到我们自己的方法。这时我们需要用到backtrace命令,一般简写为bt:们还可以使用list(简写为l)命令,打印出更多信息:    (gdb) l     5       6   int main(int argc, char **argv)     7   {     8       NSAutor

OpenGL API - glViewport_Jave.Lin的博客-程序员ITS203

文章目录名称原型参数描述错误https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glViewport.xhtmlOpenGL API - 笔记汇总名称glViewport ---- 设置视口。原型void glViewport(GLint x, GLint y, GLsizei width, GLsizei height);参数x, y指定矩形视口的左下角,像素单位。初始值为 (0, 0)。

nodejs 远程连接redis (解决 -4078)_溜_x_i_a_o_迪的博客-程序员ITS203

报错小迪使用nodejs 远程连接redis 会报错 =&gt;Error: Redis connection to 48.213.229.23:6379 failed - connect ECONNREFUSED 48.213.229.23:6379at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {errno: -4078,code: ‘ECONNREFUSED’,syscall: ‘connect’,add

随便推点

dell灵越笔记本后盖怎么拆_戴尔inspiron15 5547笔记本怎么拆机清灰?_Isaac wang的博客-程序员ITS203

小编最近的笔记本电脑每次开机风扇都会有异响,但过一会就会好,估计是风扇灰尘太多造成的,所以自己动手把电脑拆开后清理了下,然后开机就没有异响了。然后我把过程拍成图片,并附上文字,分享给大家,希望能帮到和我有同样困扰的朋友。一、拆开电脑基座盖1、首先关闭电脑,并合上显示屏,拔掉电脑的电源线及其他附件,并将电脑翻转过来。用十字螺丝刀拧下用于将基座盖固定到基座的螺钉,使用一字螺丝刀或塑料划片,从基座中撬离...

js的window弹窗案例_小蝌蚪找玛玛的博客-程序员ITS203_js window的弹窗

实现过程:1.创建一个页面window.html(1) 有两个输入项和一个按钮;(2) 按钮上有一个事件,弹出一个新窗口;window对象的open()方法用来打开一个新窗口,window.open("打开的新窗口的地址", "","窗口的特性");window.html代码如下:&lt;!DOCTYPE html&gt;&lt;html&gt;&lt;head&gt...

VMWARE无法启动_邱可爱的博客-程序员ITS203

vmware启动之后报了如下的错:Warning: the system was unable to load a page of memory; this can becaused by network problems or a failing hard disk drive. VMware Playerunrecoverable error: (vcpu-0) Exception 0xc0000006 (disk error whilepaging) has occurred. ……找到

撷英阁-开卷有益之怎么写读书笔记_cinnarnia的博客-程序员ITS203_开卷有益的笔记

怎样写读书笔记  在我看来读书笔记最好的方法就把书或资料直接做成思维导图,比写读书笔记有效率多了。但在很多的时候还需要按照传统的方法来写,这是我收集的文章专门说写读书笔记的方法的:  读书笔记一般分为摘录、提纲、批注、心得几种,格式及写法并不艰深,心得笔记中的读后感有点麻烦,但只要懂得论点、论据和论证这三要素的关系,就会轻松拿下,因为读后感不过就是一种议论文而矣。我觉得以失

Xgboost安装、使用和算法原理理解_Just Jump的博客-程序员ITS203_xgboost中文文档

一、Xgboost相关重要文档1、官方文档官方文档中可查询到各语言版本的安装方法、官方用例等XGBoost Documentation — xgboost 1.6.0-dev documentationhttps://xgboost.readthedocs.io/en/latest/index.html2、githubgithub源码可查看代码实现、下载数据样例等GitHub - dmlc/xgboost: Scalable, Portable and Distributed Gradi

video.js视频播放功能_船长在船上的博客-程序员ITS203_video.js

&lt;!DOCTYPE html&gt;&lt;html lang="en"&gt;&lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;videojs视频播放&lt;/title&gt;&lt;/head&gt;&lt;link href="https://cdnjs.cloudflare.com/ajax/libs/video.js/7.3.0/video-js.min.css" rel="stylesheet"&gt;&lt.

推荐文章

热门文章

相关标签