题目如下:
输入某年某月某日,判断这一天是这一年的第几天?
1.分析问题:基本算法为之前月份的天数和加当前天,例如3月8日,需要用1,2月份的总天数加8。 但要考虑特殊情况,如果是闰年,那么2月不再是28天,而是29天,此时如果月份大于2,那么之前月份的天数和则应加1才对。
2.源代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int year,month,day;
int sum;
int leap;
printf("Please input the date(Like 1990-10-22)!
");
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("Data error
");
return 0;
break;
}
sum+=day;
leap=year%400==0||(year%4==0&&year%100!=0)?1:0; //判断是否为闰年 四年一闰;百年不闰,四百年再闰
sum+=leap==1&&month>2?1:0; //是闰年且月份大于2的需要加一天
printf("This is %d the %dth day!
",year,sum);
return 0;
}