2021-01-02-寒假-第几天-2005

Problem Description
给定一个日期,输出这个日期是该年的第几天。

Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。

Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。

Sample Input
1985/1/20
2006/3/12

Sample Output
20
71
做题思路:
主要是先区分闰年和平年。
闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
然后再将每月的天数相加即可

#include <stdio.h>
int main()
{
    int year,month,day;
    char a,c,qwe;
    while(scanf("%d%c%d%c%d",&year,&a,&month,&c,&day)!=EOF)
    {
	int days[13]={0},flag=1;
    if(year%4==0&&year%100!=0||year%400==0) flag=0;//year为闰年的话,flag=0;days[2]=29;
    for(int i=1;i<13;i++){
        if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) days[i]=31;//大月
        else if (i==4||i==6||i==9||i==11) days[i]=30;
         if (i==2&&flag==0) days[i]=29;
        else if(i==2&&flag==1)  days[i]=28;
    }
    int sum=0;
    if(month==1) sum=day;
    else {for(int i=1;i<month;i++){
        sum+=days[i];
    }
          sum+=day;
         }
    printf("%d\n",sum);
    scanf("%c",&qwe);
	}
    return 0;
}
上一篇:实验1 C语言开发环境使用和数据类型、运算符、表达式


下一篇:P2按要求补全表达式