C语言编写程序计算某年某月某日是该年中的第几天(3种方法)

2024-03-12 21:10

本文主要是介绍C语言编写程序计算某年某月某日是该年中的第几天(3种方法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C语言编写程序计算某年某月某日是该年中的第几天

编写程序计算某年某月某日是该年中的第几天
例如输入fool girl 的出生日期1999-5-27
输出147

闰年条件

判断一个年份是否为闰年,通常有以下三个条件:

  1. 如果该年份能够被400整除,则是闰年。
  2. 如果该年份能够被4整除但不能被100整除,则也是闰年。
  3. 其他情况则不是闰年。

其中,第一个条件是根据闰年的定义来判断的,即每四年一闰,但是每百年不闰,每四百年再闰。因此,能被400整除的年份必然是闰年。

第二个条件则是对第一个条件的补充,因为能被4整除但不能被100整除的年份也是闰年。例如,2000年就是一个能被400整除的年份,是闰年;而1900年虽然能被4整除,但是也能被100整除,因此不是闰年。

第三个条件则是其他情况,即不能被4整除、或者能被100整除但不能被400整除的年份都不是闰年。

第一种switch语句代码实现

int year,month,day,sum=0,i;
scanf("%d-%d-%d",&year,&month,&day);
//如果是1月,直接输出day就行
if(month==1)printf("%d ",day);
else{for(i=1;i<month;i++){switch(i){case 1:case 3:case 5:case 7:case 8:case 10:case 12:sum+=31;break;case 4:case 6:case 9:case 11:sum+=30;break;case 2:sum+=28;}}sum+=day;                  //如果是闰年,3月之后的都需要+1if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {if (month > 2) {sum += 1;}}printf("%d ",sum);
}

第2种(将之前的月天数直接给出)

int year, month, day,sum=0;
scanf("%d-%d-%d",&year,&month,&day);
switch(month)
{case 1: sum=0; break;case 2: sum=31; break;case 3: sum=59; break;case 4: sum=90; break;case 5: sum=120; break;case 6: sum=151; break;case 7: sum=181; break;case 8: sum=212; break;case 9: sum=243; break;case 10: sum=273; break;case 11: sum=304; break;case 12: sum=334; break;
}
sum+=day;                  
//如果是闰年,3月之后的都需要+1
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {if (month > 2) {sum += 1;}
}
printf("%d",sum);

第3种最简方法(纯属个人认为)

//数组下标和月份一一对应,内容为对应月份的天数
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},year,month,day,sum=0,i;scanf("%d-%d-%d",&year,&month,&day);//将day存放到a[0]的位置,方便后续统计,如果是闰年,需要将2月份改为29天
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {a[0]=day;a[2]=29;
}else{a[0]=day;
}       //因为a[0]存放的是day,所以就可以直接从a[0]遍历相加
for(i=0;i<month;i++){sum+=a[i];
}printf("%d ",sum);
第3种运算实例

在这里插入图片描述

第3种扩展方法(总天数倒着减)

int year,month,day,sum=365,i,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};scanf("%d-%d-%d",&year,&month,&day);//闰年
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {a[2]=29;sum=366;
}//从12月份开始往前减
for(i=12;i>month;i--){sum-=a[i];
}    //天数减去该月的天数
printf("%d ",sum-a[month]+day);

这篇关于C语言编写程序计算某年某月某日是该年中的第几天(3种方法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/802592

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Maven 配置中的 <mirror>绕过 HTTP 阻断机制的方法

《Maven配置中的<mirror>绕过HTTP阻断机制的方法》:本文主要介绍Maven配置中的<mirror>绕过HTTP阻断机制的方法,本文给大家分享问题原因及解决方案,感兴趣的朋友一... 目录一、问题场景:升级 Maven 后构建失败二、解决方案:通过 <mirror> 配置覆盖默认行为1. 配置示

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

Mybatis Plus Join使用方法示例详解

《MybatisPlusJoin使用方法示例详解》:本文主要介绍MybatisPlusJoin使用方法示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录1、pom文件2、yaml配置文件3、分页插件4、示例代码:5、测试代码6、和PageHelper结合6

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中