题目
输入某年某月某日,判断这一天是这一年的第几天?
编程没有捷径。Talk is cheap. Show me the code
程序分析
以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
PS:建议先自行思考后再继续往后看。
代码实现
代码已经上传到Github:传送门
#include<stdio.h>
/**
* @description:
* @author: HuaiAngg
* @create: 2019-01-28 22:02
*/
int main(void)
{
int day,month,year,sum,leap;
printf("\n请输入年、月、日,格式为:年 月 日(2019 01 28)\n");
scanf("%d%d%d",&year,&month,&day); // 格式为:2019 01 28
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("data error");break;
}
sum=sum+day; // 再加上某天的天数
if(year%400==0||(year%4==0&&year%100!=0)) {// 判断是不是闰年
leap=1;
} else {
leap=0;
}
if(leap==1&&month>2) { // *如果是闰年且月份大于2,总天数应该加一天
sum++;
}
printf("这是这一年的第 %d 天。",sum);
printf("\n");
return 0;
}
输出结果
请输入年、月、日,格式为:年 月 日(2019 01 28)
2019 01 29
这是这一年的第 29 天。
请按任意键继续. . .
说明
题目来源于网络素材,笔者只负责整理。
如有侵权请联系笔者删除!
觉得还不错,麻烦不要吝惜你的赞?