C语言100题练习计划——判断这一天是这一年的第几天?
不要失去信心,只要坚持不懈,就终会有成果的。——钱学森
🐼本篇内容简介:一、问题呈现-->二、源码实现-->三、输出结果展示-->四、流程分析
🥇C语言100题练习专栏计划:目的:巩固练习C语言,增强上机、动手实践能力,交流学习!题量随时间的增加会有所增加。
C Programming Language
一、问题呈现
Problem Description
输入某年某月某日,判断这一天是这一年的第几天?
Input
依次输入三个变量值year、month、day分别代表年、月、日
Output
这一天是这一年的第几天。
Sample Input
2020 12 27
Sample Output
2020 361
二、源码实现
#include<stdio.h> #include<stdlib.h> int main(){ int day,month,year,sum,flag; printf("请依次输入年、月、日\n"); 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; default: printf("数据出现错误,请检查改正后重新运行"); break; } sum = sum + day;//再加上某天的天数 if(year%400==0||(year%4&&year%100!=0)){//判断是否是闰年 flag = 1; } else flag = 0; if(flag==1&&month>2){//如果是闰年且月数大于2,总天数加1 sum++; } printf("这是%年第%d天\n",year,sum); return 0; }
三、输出结果展示
1.输出结果:
请依次输入年、月、日 2020 12 27 这是2020年的第361天 -------------------------------- Process exited after 4.118 seconds with return value 0 请按任意键继续. . .
2.输出结果(图示版):
四、流程分析
1.读题
输入某年某月某日,判断这一天是这一年的第几天? 关键点:①某年某月某日 ②判断这一天是这一年的第几天
2.构思
根据第关键点某年某月某日,我们知道,年分闰年和平年,这个是要考虑的,为什么还要判断这一天是这一年的第几天?因为月份的天数也有所不同,尤其是二月要特别考虑,那么闰年和平年是什么、2月为什么要特别考虑?如果不清楚,请看该段文字下方注释。清楚了这些之后,按照我上面写的思路,先计算某月以前月份的总天数,再加上某天的天数,然后再判断是否是闰年,如果是且月份大于2,那么总天数需要再加1。一个switch,两个if语句去实现即可。
注释: 公历平年全年有365天,而公历闰年全年有366天。非整百年的年份中,能被4整除的为闰年,不能被4整除的为平年。整百年的年份中,能被400整除的是闰年,不能被400整除的是平年。
2月份的天数不同。闰年的2月有29天,平年的2月就只有28天。
3.代码
把你所思所想,以代码的形式,写出来。
ps:这道题的方法,本文虽然只写出这一种,但是思路方法其实不止这一种,例如:你可以用switch单独分别每个月的天数,再进行计算,也是可以的。其它的方法可自行尝试一下。
作者:Code_流苏(一个喜欢古诗词和编程的Coder😊)
★喜欢的话,还请多多点赞与关注! 感谢支持!
C语言100题练习专栏计划持续进行,欢迎评论交流学习!