名人说:不要失去信心,只要坚持不懈,就终会有成果的。——钱学森
进度:C/C++语言100题练习计划专栏,目前5/100
🐼本篇内容简介:一、问题呈现-->二、源码实现-->三、输出结果展示-->四、流程分析
🥇C语言100题练习专栏计划:目的:巩固练习C语言,增强上机、动手实践能力,交流学习!题量随时间的增加会有所增加。
一、问题呈现
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
请按任意键继续. . .
四、流程分析
1.读题
输入某年某月某日,判断这一天是这一年的第几天? 关键点:①某年某月某日 ②判断这一天是这一年的第几天
2.构思
根据第关键点某年某月某日,我们知道,年分闰年和平年,这个是要考虑的,为什么还要判断这一天是这一年的第几天?因为月份的天数也有所不同,尤其是二月要特别考虑,那么闰年和平年是什么、2月为什么要特别考虑?如果不清楚,请看该段文字下方注释。清楚了这些之后,按照我上面写的思路,先计算某月以前月份的总天数,再加上某天的天数,然后再判断是否是闰年,如果是且月份大于2,那么总天数需要再加1。一个switch,两个if语句去实现即可。
注释: 公历平年全年有365天,而公历闰年全年有366天。非整百年的年份中,能被4整除的为闰年,不能被4整除的为平年。整百年的年份中,能被400整除的是闰年,不能被400整除的是平年。
2月份的天数不同。闰年的2月有29天,平年的2月就只有28天。
3.代码
把你所思所想,以代码的形式,写出来。
Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊)
如果对大家有帮助的话,希望大家能多多点赞+关注!这样我动力会更足哦! ღ( ´・ᴗ・` )比心
友情提示:第一篇为试看内容,关注博主就可以免费观看本专栏全部内容!(*^ ▽ ^ *)