题目:第几天
题意描述 给定一个日期,输出这个日期是该年的第几天。 输入 数据格式为YYYY-MM-DD组成 输出 对于每组输入数据,输出一行,表示该日期是该年的第几天。 样例输入 2000-01-01 样例输出 1
思路 根据题目可知,我们要通过给定的日期来计算是该年的第几天,按照要求输入,在年月日之间通过-来分隔,因此在scanf中%d与%d之间需要有“-”。将数据输入后,我们要根据年份来判断该年是否为闰年,在计算二月的天数的时候可以收到正确的数据。 代码一
#include<stdio.h>
int main()
{
int year,month,day;
int s=0;
scanf("%d-%d-%d", &year,&month,&day);
switch(month)
{
case 12: s+=30;
case 11: s+=31;
case 10: s+=30;
case 9: s+=31;
case 8: s+=31;
case 7: s+=30;
case 6: s+=31;
case 5: s+=30;
case 4: s+=31;
case 3: s+=28;
case 2: s+=31;
case 1: s+=day;
}
if((year%4==0 && year%100!=0 || year%400==0) && month>=3)
s++;
printf("%d\n",s);
return 0;
}
代码二
#include<stdio.h>
int main()
{
int num[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
int year,month,day,sum;
scanf("%d-%d-%d",&year,&month,&day);
sum=0;
if((year%4==0&&year%100!=0)||year%400==0)
{
for(int i = 0; i < month-1; i++)
{
if(i==1)
sum = sum + 29;
else
sum = sum + num[i];
}
sum = sum + day;
printf("%d\n",sum);
}
else
{
for(int i = 0; i < month-1; i++)
sum = sum + num[i];
sum = sum + day;
printf("%d\n",sum);
}
return 0;
}
以上用了两种不同的思路,不管怎么说,像这样的题判断闰年是少不了的。
|