题目描述
输入一个日期,求该日期距离当年最后一天的天数。例如2016年12月10日,距离2016年底还有21天.
输入
输入某年某月某日
输出
输出距离最后一天还有多少天
样例输入
2016 12 10
样例输出
21
思路:利用布尔返回值1/0化简对闰月讨论,第一遍switch得出距离月末(断),第二遍得出距离年末(加)
实现代码如下:
#include"stdio.h"
int main(){
int year,month,day,lsDay=0;
scanf("%d %d %d", &year, &month, &day);
switch(month){
case 1 :lsDay+= 31 - day;break;
case 2 :lsDay+= 28 + ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) - day;break;
case 3 :lsDay+= 31 - day;break;case 4 :lsDay+= 30 - day;break;
case 5 :lsDay+= 31 - day;break;case 6 :lsDay+= 30 - day;break;
case 7 :lsDay+= 31 - day;break;case 8 :lsDay+= 31 - day;break;
case 9 :lsDay+= 30 - day;break;case 10:lsDay+= 31 - day;break;
case 11:lsDay+= 30 - day;break;case 12:lsDay+= 31 - day;break;
default:lsDay=0;
}
switch(month + 1){
case 2:lsDay+=28+((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
case 3:lsDay+=31; case 4:lsDay+=30;
case 5:lsDay+=31; case 6:lsDay+=30;
case 7:lsDay+=31; case 8:lsDay+=31;
case 9:lsDay+=30; case 10:lsDay+=31;
case 11:lsDay+=30;case 12:lsDay+=31;break;
default:lsDay+=0;
}
printf("%d\n",lsDay);
}