C语言 计算某日在一年的第几天及Linux下编译
2021/9/26 7:12:56
本文主要是介绍C语言 计算某日在一年的第几天及Linux下编译,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录
一、C语言 计算某日在一年的第几天
二、Linux下编译C语言程序
一、C语言 计算某日在一年的第几天
本篇程序的总体思路是:day=(所求日期月份-1)*31+所求日期的日-多余的天数(由于每月天数不同,所以前面的*31会使结果会多出几天,所以要减去)
分为三种情况
月份=1,2 、月份<=7 、月份>7
月份=1,2时
无论平年还是闰年,1月与2月都无需减去“多余的天数”
月份<=7时
“多余的天数”=月份-月份除以2的商(闰年)
“多余的天数”=月份-(月份除以2的商+1)(平年)
月份>7时
“多余的天数”=月份除以2的商(闰年)
“多余的天数”=月份除以2的商+1(平年)
#include <stdio.h> void main() { int mm0, mm1, mm2, mm3, mm4, mm5,mm6, mm7,mm8,mm9,day; printf("输入日期(8位数字例:20210922):"); scanf("%d", &mm0); mm1 = mm0 / 10000;//年份 mm2 = mm0 / 100 % 100;//月份 mm3 = mm0 % 100;//日 mm4 = mm1 % 4;//根据年份除以4是否整除,判断是否闰年 mm5 = mm2 - 1;//月份减去1 mm6 = mm2 / 2;//月份除以2的商 mm7 = mm2 - mm6; mm8 = mm7 + 1; mm9 = mm2 / 2 + 1; if (mm4==0)//被四整除则为闰年 { if (mm2 == 2) { day = mm5 * 31 + mm3; printf("%d年中的第%d天", mm1, day); } else if (mm2 <= 7) { if (mm2 == 1) { day = mm5 * 31 + mm3; printf("%d年中的第%d天", mm1, day); } else { day = mm5 * 31 + mm3 - mm7; printf("%d年中的第%d天", mm1, day); } } else { day = mm5 * 31 + mm3 - mm6; printf("%d年中的第%d天", mm1, day); } } else//平年 { if (mm2 == 2) { day = mm5 * 31 + mm3; printf("%d年中的第%d天", mm1, day); } else if (mm2 <= 7) { if (mm2 == 1) { day = mm5 * 31 + mm3; printf("%d年中的第%d天", mm1, day); } else { day = mm5 * 31 + mm3 - mm8; printf("%d年中的第%d天", mm1, day); } } else { day = mm5 * 31 + mm3 - mm9; printf("%d年中的第%d天", mm1, day); } } }
在进行某些科学计算时,我们有必要计算出某日在一年的第几天,例如在天文观测需要计算MJD的过程中,需要对下面的时间格式进行转换。
2018-11-26T21:39:19
将其转换成如下格式可进行下一步运算
2018-330-21:39:19
#include <stdio.h> void main() { int mm1, mm2, mm3, mm4, mm5, mm6, mm7, mm8, mm9, day, nm1, nm2, nm3;//nm1,nm2,nm3为时间 printf("输入日期:"); scanf("%d-%d-%dT%d:%d:%d", &mm1, &mm2, &mm3, &nm1, &nm2, &nm3); mm4 = mm1 % 4;//根据年份除以4是否整除,判断是否闰年 mm5 = mm2 - 1;//月份减去一 mm6 = mm2 / 2; mm7 = mm2 - mm6; mm8 = mm7 + 1; mm9 = mm2 / 2 + 1; if (mm4 == 0)//被四整除则为闰年 { if (mm2 == 2) { day = mm5 * 31 + mm3; printf("%d-%d-%d:%d:%d", mm1, day, nm1, nm2, nm3); } else if (mm2 <= 7) { if (mm2 == 1) { day = mm5 * 31 + mm3; printf("%d-%d-%d:%d:%d", mm1, day, nm1, nm2, nm3); } else { day = mm5 * 31 + mm3 - mm7; printf("%d-%d-%d:%d:%d", mm1, day, nm1, nm2, nm3); } } else { day = mm5 * 31 + mm3 - mm6; printf("%d-%d-%d:%d:%d", mm1, day, nm1, nm2, nm3); } } else { if (mm2 == 2) { day = mm5 * 31 + mm3; printf("%d-%d-%d:%d:%d", mm1, day, nm1, nm2, nm3); } else if (mm2 <= 7) { if (mm2 == 1) { day = mm5 * 31 + mm3; printf("%d-%d-%d:%d:%d", mm1, day, nm1, nm2, nm3); } else; { day = mm5 * 31 + mm3 - mm8; printf("%d-%d-%d:%d:%d", mm1, day, nm1, nm2, nm3); } } else { day = mm5 * 31 + mm3 - mm9; printf("%d-%d-%d:%d:%d", mm1, day, nm1, nm2, nm3); } } }
二、Linux下编译
很多天文数据处理工具需要在Linux下运行,所以有必要在Linux将C语言程序编译。(本过程需要用到 gcc命令)
1.创建一个拓展名为 .c 的文件(以vim为例)
vim test.c
2.将C语言程序的代码粘贴到test.c文件中,保存
3.编译
gcc day.c -o day
最后会生成一个文件,尝试运行一下
./day
教程到此结束
写在最后
本程序来自刚刚学习C语言的学生(只学了一堂课,所以只会简单的语句if,/笑哭)且是第一篇博文,我会不断学习不定期的更新程序使其达到最简。各位朋友如有问题可评论或私信,望各位朋友给出建议,很希望与大家交流~
这篇关于C语言 计算某日在一年的第几天及Linux下编译的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法